- 什么是Sql?
Structured Query Language:结构化查询语言
其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。
2. Sql通用语法
1. Sql语句可以单行或多行书写,以分号结尾。
2. 可使用空格和缩进来增强语句的可读性。
3. Mysql数据库的Sql语句不区分大小写 关键字建议使用大写。
4. 3种注释
*单行注释:--注释内容 或 # 注释内容( mysql 特有)
*多行注释: /* 注释 */
5. Sql分类
1)DDL(Data Definition language)数据定义语言
用来定义数据库对象:数据库,表,列等。关键字:create,drop,alter等。
2)DML(Data Manipulation Language)数据库操作语言
用来对数据库中表的数据进行增删改。关键字:insert,delete,update等。
3) DQL(Data Query Language)数据查询语言
用来查询数据库中表的记录(数据)。关键字:select,where等。
4) DCL(Data Control Language)数据控制语言
用来定义数据库中的访问权限和安全级别 及创建用户。关键字:grant revoke 等。
DDL:操作数据库、表
1. 操作数据库:crud
1.create 创建
2.retrieve 查询
show databases ; -- 查询当前数据库有哪些
show create database mysql; -- 查询某个数据库的创建语句
create database db1; -- 创建数据库
create database if not exists db1;
create database if not exists db1 character set utf8;
3. update 修改
alter database db1 character set 字符集名称
4. delete 删除
drop database if exists db3;
5. 使用数据库
select database(); -- 显示当前使用的数据库
use db1; -- 使用数据库
查询表:
show tables; -- 查询当前数据库中所有表名称
desc 表名; -- 显示表的结构信息
创建表:
create table 表名(
列名1 类型,
列名2 类型,
列名3 类型
);
数据库数据类型:
int: 整数类型
double: 小数类型 double(5,2) 小数2位
data: 日期 只包含年月日 yyyy-MM-dd
datatime: 日期 包含年月日时分秒 yyyy-MM-dd HH:mm:ss
timestamp: 时间戳类型 默认使用系统时间
varchar: 字符串类型 varchar(20) 最长20个字符
create table Student( id int, name varchar(32), age int, score double(4,1), birthday date, insert_time timestamp -- 最后一句不用加逗号 );
create table stu like student; -- 创建一个长的和student结构一样的表
删除表:
drop table if exists 表名;
drop table 表名;
修改表:
修改表名:
alter table 表名 rename to 新表名
修改表的字符集:
show create table 表名; -- 查看表的创建语句
alter table student character set utf8;
添加一列:
alter table student add gender varchar(10);
修改列名称,类型:
alter table student change gender sex varchar(20);
alter table student modify gender varchar(20);
删除列:
alter table student drop sex;
插入数据:
insert into 表名(列名...) values(列名对应的值);
删除数据:
delete from stu where id = 1; -- 如果不加条件 删除表中所有数据
truncate table stu; -- 删除表 然后再创建一个一模一样的空表
修改数据:
update 表名 set 列名 = 值1,列名2 = 值2 [where 条件]
查询数据:
select name,math,english,math + IFNULL(english,0) as 总分 from student;
条件查询:
不等于符号:
!=
<>
和null比较: select * from stu where english is null;
范围查询: select * from stu where age in (10,11,15);
like 模糊查询:
占位符:_ 代表单个字符
%代表多个任意字符