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
varchar(20) ----可变的char数组,类似Java当中的String
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字段*/
字符类型的数据前后要添加’’单引号。
插入数据
没有指定列时,要给出完整数据,且要对应顺序:
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存在判断
*---------聚合函数《《 例子》》-----*/
SELECT COUNT(*) AS TEMPTABLE FROM stud //统计所有的数量
SELECT COUNT(sname) AS TEMPTABLE FROM stud //统计的时候是不算NULL的
//统计有年龄,且有分数的人数
SELECT COUNT(sage) AS TEMPTABLE FROM stud WHERE sname IS NOT NULL;
//统计平均值
SELECT ROUND(AVG(score)) AS roundsocre FROM stud
SELECT SUM(score) AS ss FROM stud
SELECT MAX(sage) AS maxage FROM stud
//查询年龄最小的那个人的名字
SELECT sname FROM stud WHERE sage=(SELECT MIN(sage) FROM stud)
Length(str) - 求字符串长度
Ltrim(str) - 去掉左边的空格
Rtrim(str) - 去掉右边的空格
Left(str,n); - 从左边取出n个字符
Right(str,n); - 从右边取出n个字符
Substring(str,begin,end) -返回子串
Reverse(str) –返回颠倒的字符串
Lower(str) - 转成小写
Upper(str) - 转成大写
Concat(Str,str…..)串联字符串。
Instr(str,s) – 返回s在str中出面的位置,没有则返回0
查询所有人考试的总分
Select sum(score),name from stud group by name;
查询考试总分大于50的人:下面使用了别名和having关键字。
Select sum(score) as c,name from stud group by name having c>50
//固定搭配
SELECT * FROM + WHERE + ORDER BY(要放在最后)
GROUP BY + HAVING