SQL语言都基于SQL92标准,但各数据库之间又存在差异。目前最新的标准为SQL99,它同样兼容SQL92。
SQL-Structured Query Language结构化查询语言。
DDL – 数据定义语言Data Definition Language
建库、建表、设置约束等:
create\drop\alter
DCL – 数据控制语言 Data Controll Language
数据授权,收回授权
grant\revoke
DML-数据操纵语言Data Manipulation Language。
主要指数据的增删查改
Select\delete\update\insert\call
mysql –uroot –p1234 //登录
mysql> show databases; //显示所有已经存在的数据库
mysql> use test; //使用某个数据库
mysql> show tables; //显示当前数据库中的所有表
mysql> help; //显示
mysql> desc tableName; //显示表结构
导出数据库中的所有表:在命令行模式下:
shell/> mysqldump –uroot –p1234 –d dbName > d:\a\a.sql
导入:导入时,必须要先手工建立一个新的数据库:
mysql>use dbName;
Mysql>source d:\a\a.sql
或:
shell/>mysql –uroot –p1234 –D dbname < d:\a\a.sql (注意参数-D是大写)
mysql>show databases; //显示所有已经存在的数据库
mysql>use test; //使用某个数据库
mysql>show tables; //显示当前数据库中的所有表
mysql>help; //显示
mysql>desc tableName; //显示表结构
1、建立数据库。DDL –数据定义语言
ceate database abc;
2、创建一个表。DDL
create table stud(…..);
3、向其中写入一行数据。DML
insert into
4、查询此行数据。DML
select * from 表名
5、删除此行数据。DML
delete from 表名 where sid="";
6、删除此表。DDL
drop table 表名
7、删除数据库 DDL
drop database 数据库名
建数据库的语法\建数据表的语法:
建库:
Create database 数据库的名;
处理中文乱码问题:
Create database 数据库名 character set UTF8;//指定字符编码
建表:
Create table 表名(
字段名 数据类型(长度),…
);
比较经常使用的数据类型为:
int、varchar、char、numeric(double,float)、text
<span style="white-space:pre"> </span>varchar(20) ----可变的char数组,类似Java当中的String <span style="white-space:pre"> </span>char(20) ----固定长度的char数组
Int和numeric:
Int类型不能保存小数位。
Numeric可以保存小数位。如numeric(4,2)则可以表示最大数据为:99.99。注意4是总位数,2是小数位数。
创建表: Create table stud( id int, name varhcar(30) ); 创建时同时指定不能为空: Create table tb( name varchar(20) not null )
修改表: Alter table stud add sex char(1); /*添加一个新的字段 */ Alter table stud drop column sex; /* 删除sex字段*/ <span style="white-space:pre"> </span>
字符类型的数据前后要添加’’单引号。 插入数据
没有指定列时,要给出完整数据,且要对应顺序: Insert into stud values(1,’Tom’,’1’); 优化写入,指定列: Insert into stud(id,name) values(1,’jack’);
//插入记录,当数据不全时,要指定列名 INSERT INTO stud(id,sname,age,score) VALUES(1010,'李小明',25,90);查询 (Select)
查询数据: Select * from stud; -- 通过*将所有列显示出来
查询指定的列: Select id ,name from stud 另名:as
Select id as 编号,name as 姓名 from stud; //不建议使用中文 或是省去as关键字: Select id 编号,name 姓名 from stud; 给表也取个别名: Select s.id,s.name from stud as s;
修改数据: Update stud set name=‘Jack’; 同时修改两个值: Update stud set name=‘Rose’,id=22 where id=1; 在原值上面进行累加操作: Update product set price=price*1.1 -所有商品的价格上涨10%
删除数据: Delete from stud /*全部删除*/ Delete from stud where id=1; /*删除指定的行 */ 也可以使用 TRUNCATE TABLE stud; //它与delete的区别是不记录操作日志,即无法恢复数据。where 字句
Select 字段 From 表名 where 条件 and 条件 or 条件 Update table tableName set .. Where 条件 Delete from tableName where ….
where关键字。(Name=‘dd’ and age=33) or addr=‘BJ’ between X and Y关键字。 在什么之间 in关键字和not in. In(‘….’,’aafad’,’afasdf’); and和or关键字。 使用like实现模糊查询。% 通过is null判断是否为null。(要区分空字符串与null的区别)
《《实验中的例子》》
//※范围查询 //查询年龄在24-26之间的学生信息 //连续区间内的查询 SELECT * FROM stud WHERE age>=24 AND age<27; //用BETWEEN是左右都包含,如下功能是[24,26] SELECT * FROM stud WHERE age BETWEEN 24 AND 26; //离散的多个 SELECT * FROM stud WHERE age=24 OR age=38; SELECT * FROM stud WHERE age IN(24,26,30); //※模糊查询LIKE 参数:%(任意匹配), _(匹配一个) //查询姓“王”的学生信息 SELECT * FROM stud WHERE sname LIKE '王%' //查询姓“王”且名为单字的学生信息 SELECT * FROM stud WHERE sname LIKE '王_'; //查询姓“王”且名为双字的学生信息 SELECT * FROM stud WHERE sname LIKE '王__'; //查询姓名中包含“五”字的学生信息 SELECT * FROM stud WHERE sname LIKE '%五%';
Count(*)行数量—不包含空行 null avg平均。 Sum求和。 Max最大, Min最小。 Distinct-去除相同的信息。 Exists存在判断
*---------聚合函数《《 例子》》-----*/ <span style="white-space:pre"> </span>SELECT COUNT(*) AS TEMPTABLE FROM stud //统计所有的数量 <span style="white-space:pre"> </span>SELECT COUNT(sname) AS TEMPTABLE FROM stud //统计的时候是不算NULL的 //统计有年龄,且有分数的人数 <span style="white-space:pre"> </span>SELECT COUNT(sage) AS TEMPTABLE FROM stud WHERE sname IS NOT NULL; //统计平均值 <span style="white-space:pre"> </span>SELECT ROUND(AVG(score)) AS roundsocre FROM stud <span style="white-space:pre"> </span>SELECT SUM(score) AS ss FROM stud <span style="white-space:pre"> </span>SELECT MAX(sage) AS maxage FROM stud //查询年龄最小的那个人的名字 <span style="white-space:pre"> </span>SELECT sname FROM stud WHERE sage=(SELECT MIN(sage) FROM stud)
<span style="white-space:pre"> </span>Length(str) - 求字符串长度 <span style="white-space:pre"> </span>Ltrim(str) - 去掉左边的空格 <span style="white-space:pre"> </span>Rtrim(str) - 去掉右边的空格 <span style="white-space:pre"> </span>Left(str,n); - 从左边取出n个字符 <span style="white-space:pre"> </span>Right(str,n); - 从右边取出n个字符 <span style="white-space:pre"> </span>Substring(str,begin,end) -返回子串 <span style="white-space:pre"> </span>Reverse(str) –返回颠倒的字符串 <span style="white-space:pre"> </span>Lower(str) - 转成小写 <span style="white-space:pre"> </span>Upper(str) - 转成大写 <span style="white-space:pre"> </span>Concat(Str,str…..)串联字符串。 <span style="white-space:pre"> </span>Instr(str,s) – 返回s在str中出面的位置,没有则返回0
<span style="white-space:pre"> </span>查询所有人考试的总分 <span style="white-space:pre"> </span>Select sum(score),name from stud group by name; <span style="white-space:pre"> </span>查询考试总分大于50的人:下面使用了别名和having关键字。 <span style="white-space:pre"> </span>Select sum(score) as c,name from stud group by name having c>50
//固定搭配 <span style="white-space:pre"> </span>SELECT * FROM + WHERE + ORDER BY(要放在最后) <span style="white-space:pre"> </span>GROUP BY + HAVING