设为首页收藏本站我的广告

运维网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
运维网 首页 数据库运维 SQL Server 查看内容

sql_快速入门

2012-4-27 13:37| 发布者: yunweiw.com| 查看: 753| 评论: 0|原作者: 运维网|来自: 网络

  SQL 学习笔记快速回顾:

  第一部分:入门基础

  修改sql中文乱码问题:

  第一语句设置:show variables;执行:set character_set_client=gb2312;执行:set character_set_results=gb2312;(关掉客户端就会恢复默认设置)

  第二解决方案是改变sql配置文件来实现,但是一定要记得改回默认;(不建议使用)

  找到安装目录下的my.ini文件,在文件下的 CLIENT SECTION下的

  default-character-set=utf8改为你想要的编码就可以了;

  1:明确库与表的关系一般是一个应用创建一个库,一个库包括多个表;2:创建数据库的语法: CREATE DATABASE [IF NOT EXSTS] db_name CHARASTER SET *** CHARACTER SET:指定数据库采用的字符集3:显示库的信息SHOW DATABASES;4:显示数据库创建信息SHOW CREATE DATABASE 库名;5:数据库删除语句:DROP DATABASE 库名;6:修改数据库,不能修改库名;修改语法:alter database db_name;7:数据备份的语法:MYSQLDUMP -u用户名 —p密码 数据库名>位置\名字。jsp;8:数据恢复语法有三种:1:如果你是删除了库的,那么你就的想到恢复到那个库中,以及围绕这个思想,如果删除库,那么你就创建库:CREATE DATABASE DB_NAME;然后再恢复SOURS 文件名。sql windows命令:mysql -u用户名 -p密码 数据地点;改动脚本文件,及备份的文件,即加入mysql -uroot -proot

  2:在上面员工表的基本上增加一个image列ALTER TABLE employee add image varchar(20);3:再填充点内容;insert into employee(id,name,job) values (1,"wode","nini") ;4:修改job列,使其长度为60.(DESC 表名)作用是显示查看表的列;显示创建细节 SHOW CREATER TABLE 表名;ALTER TABLE MODIFY JOB VARCHAR(60);5:删除gender列。

  ALTER TABLE EMPLOYEE DROP gender;6:修改表的字符集为utf-8 ALTER TABLE EMPLOYEE CHARATER SET UTF8;7:列名name修改为username ALTER TABLE EMPLOYEE TO USERNAME;

-------------查看表中数据:select * from 表名;

  第二部分:CDUR insert语句——增加数据;

  语法:insert into table_name( ) values( ); ——插入的数据应与字段的数据类型相同。

  数据的大小应在列的规定范围内,例如:不能将一个长度为80的字符串加入到长度为40的列中。

  在values中列出的数据位置必须与被加入的列的排列位置相对应。

  字符和日期型数据应包含在单引号中。

  插入空值,不指定或insert into table value(null)

  UPDATE语句——更新语句;语法:UPDATE TABLE_NAME SET WHERE

  UPDATE语法可以用新值更新原有表行中的各列。

  SET子句指示要修改哪些列和要给予哪些值。

  WHERE子句指定应更新哪些行。如没有WHERE子句,则更新所有的行。

  使用 update语句修改表中数据;

  实现例子:在employee表中修改表中的纪录;1:将所有员工薪水修改为5000元。

  UPDATE EMPLOYEE SET salary=5000;2:将姓名为‘HJJ’的员工薪水修改为3000元。

  UPDATE EMPLOYEE SET salary=3000 WHERE NAME='HJJ';3:将姓名为‘aaa’的员工薪水修改为4000元,job改为ccc. UPDATE EMPLOYEE SET salary=4000 ,job='ccc' WHERE NAME='HJJ';4:将hjj的薪水在原有基础上增加1000元。

  UPDATE EMPLOYEE SET salary=salary+1000 WHERE NAME='HJJ';

  DELETE语句——删除数据;语法:DELETE FROM TABLE_NAME WHERE ,,,如果不使用where子句,将删除表中所有数据。

  Delete语句不能删除某一列的值(可使用update)

  使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table语句。

  同insert和update一样,从一个表中删除记录将引起其它表的参照完整性问题,在修改数据库数据时,头脑中应该始终不要忘记这个潜在的问题。

  删除表中数据也可使用TRUNCATE TABLE 语句,它和delete有所不同,参看mysql文档。

  SELECT语句——查询数据;

  一:语法:普通查询 select [distinct] *|{column1, column2. column3……}

  from table;

  Select 指定查询哪些列的数据。

  column指定列名。

  *号代表查询所有列。

  From指定查询哪张表。

  DISTINCT可选,指显示结果时,是否剔除重复数据例子:1:查询表中所有学生的信息。

  select *from 表名;2:查询表中所有学生的姓名和对应的英语成绩。

  3:过滤表中重复数据。

  采用distinct;二:语法:使用表达式进行运算;SELECT *{COLUMN1} FROM TABLE;使用AS语句取别名;SELECT COLUMN AS 别名 FROM 表名;

  三:语法:使用WHERE子句;

> < <= >= = <> 大于、小于、大于(小于)等于、不等于

  BETWEEN ……AND…… 显示在某一区间的值比较运算符 IN(set) 显示在in列表中的值,例:in(100,200)//或LIKE ‘张pattern’ 模糊查询IS NULL 判断是否为空

  and 多个条件同时成立逻辑运算符 or 多个条件任一成立not 不成立,例:where not(salary>100);Like语句中,% 代表零个或多个任意字符,_ 代表一个字符,例first_name like ‘_a%’;四:语法:使用order by子句排序查询;ASC升序、DESC 降序;跟着from后面 (不是where后面哦!!没有where)

  SELECT COLUMN1,FROM ,,,ORDER BY COLUMN1;

  合计函数:Count(*);求和函数:Sum函数返回满足where条件的行的和求平均函数:AVG函数返回满足where条件的一列的平均值合计函数:Max/min函数返回满足where条件的一列的最大/最小值五:使用GROUP BY

  六:使用having 子句过滤

  练习:

  创建数据库:create table student(id int,name varchar(20),chinese float,english float,math float);

  insert into student(id,name,chinese,english,math) values(1,'张小明',89,78,90);insert into student(id,name,chinese,english,math) values(2,'李进',67,98,56);insert into student(id,name,chinese,english,math) values(3,'王五',87,78,77);insert into student(id,name,chinese,english,math) values(4,'李一',88,98,90);insert into student(id,name,chinese,english,math) values(5,'李来财',82,84,67);insert into student(id,name,chinese,english,math) values(6,'张进宝',55,85,45);insert into student(id,name,chinese,english,math) values(7,'黄蓉',75,65,30);

  1:求一个班级数学平均分?

  SELECT AVG(MATH) AS 数学班级平均分 from student;2:求一个班级总分平均分SELECT AVG(CHINESE+english+math) FROM STUDENT;3:统计一个班级数学总成绩?

  SELECT SUM(MATH)数学总成绩 from student;

  4:统计一个班级共有多少学生?

  SELECT count(*)from student;5:查询总分大于200分的所有同学,并输出总分SELECT * ,(CHINESE+english+math) AS 总分 FROM STUDENT where (CHINESE+english+math)>200 ;6:查询英语分数在 80-90之间的同学。

  select name,english from student where english between 80 and 90;select name ,english from student where english>80 and english<90;7:查询数学分数为80,90,96的同学。

  select name,math from student where math in(80,90,96);8:对数学成绩排序后输出。

  select name,math from student order by math desc;9:求班级最高分和最低分由高到低select max(CHINESE+english+math) AS 最高分 from student;

  第三部分:数据库表约束;这才是重点,记忆单词——

  1;定义唯一约束创建表,实现唯一约束,unique Create table people(id int primary key ,//主键约束name varchar(20) not null//不准许为空);2:删除主键:alter table table_name drop primary key;3: auto_increment//删除的情况不阻止自动增长,,,——记住单词4;定义外键约束:constraint ordersid_FK foreign key(ordersid) references orders(id),ordersid_FK:外键名称实例:创建丈夫和妻子的两个表;CREATE TABLE husband(id int primary key auto_increment,name varchar(20));CREATE TABLE wife(id int primary key auto_increment,name varchar(20),husband_id int,constraint husband_FK foreign key(husband_id) references husband(id) on delete cascade);

  set null的时候不能干掉表,可以删除元素

-----------------------------------------一对一--------------------------------------------

  create table person(id int primary key,name varchar(40));

  create table idcard(id int primary key,address varchar(40),constraint id_FK foreign key(id) references person(id));

-----------------------------------------自关联---------------------------------------------

  create table person1(id int primary key,name varchar(40),parent_id int,constraint id_FK1 foreign key(id) references person1(id));

下一篇:Mysql快速安装与基本配置

上一篇:SQL server 2012 新特新


鲜花

握手

雷人

路过

鸡蛋
加入阿里云推荐返利15%

最新评论

QQ|申请友链|sitemap|手机版|小黑屋|Archiver|运维网 ( 京ICP备16008201号  

GMT+8, 2016-12-5 12:31 , Processed in 0.080398 second(s), 28 queries , Xcache On.

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

返回顶部