@MySQL学习
*创建数据库:
create database 数据库名称;
*创建数据库,判断是否存在:
create database if not
*创建数据库,并指定字符集
create database 数据库名称 character set 字符集名;
*创建db4数据库,判断是否存在,并制定字符集为gbk
create database if not exist db4 character set gbk;
*查询所有数据库的名称;
show databases;
*查询某个数据库的字符集;
show create datdbase 数据库名称;
*修改数据库的字符集
alter database 数据库名称 character set 字符集名称;`
*删除数据库
drop database 数据库名称;
*判断数据库存在,存在再删除
drop database if exists 数据库名称;
*查询当前正在使用的数据库名称
select database();
*使用数据库
use 数据库名称;
语法:
*创建表
Create table student(
Id int,
Name varchar(32),
Age int,
Socre double(4,1),
Birthday date,
Insert_time timestamp
);
*复制表:
create table 表名 like 被复制的表名;
*查询某个数据库中所有的表名称
show tables;
*查询表结构
desc表名;
1. 修改表名
alter table 表名 rename to 新的表名;
2. 修改表的字符集
alter table 表名 character set 字符集名称;
3. 添加一列
alter table 表名 add 列名 数据类型;
4. 修改列名称 类型
alter table 表名 change 列名 新列别 新数据类型;
alter table 表名 modify 列名 新数据类型;
5. 删除列
alter table 表名 drop 列名;
drop table 表名;
drop table if exists 表名;
*语法:
insert into 表名(列名1,列名,...列名n) values(值1,值2,...值n);
*注意:
1. 列名和值要一一对应
2. 如果表名后,不定义列名,则默认给所有列添加值
Insert into 表名 values(值1,值2,…值n);
3.除了数字类型,其他类型需要使用引号(单双都可以)引起来
*语法:
delete from 表名 [where 条件]
*注意:
1. 如果不加条件,则删除表中所有记录.
2. 如果要删除所有记录
1. delete from 表名;-- 不推荐使用.有多少条记录就会执行多少次删除操作
2. TRUNCATE TABLE 表名; --推荐使用,效率更高: 先删除表,然后再创建一张一样的表.
*语法
update 表名 set 列名1= 值1,列名2= 值2,...[where 条件];
*注意:
1. 如果不加任何条件,则会将表中所有记录全部修改.
select * from 表名;
Select
字段列表
Form
表名列表
Where
条件列表
Group by
分组字段
Having
分组之后的条件
Order by
排序
Limit
分页限定
Select 字段名1,字段名2...from 表名;
*注意:
如果查询所有字段,则可以使用来替代字段列表
2. 去除重复
*distinct
*ifnull(表达式1,表达式2):null参与的运算,计算结果都为null
*表达式1:哪个字段需要判断是否为null
*如果该字段为null后的替换值.
as: as也可以省略
*语法:order by 子句
*order by 排序字段1 排序方式1, 排序字段2 排序方式2…
*排序方式:
*ASC:升序,默认的
*DESC:降序
*注意:
*如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件.
*概念:对表中的数据进行限定,保证数据的正确性、有效性和完整性.
*分类:
1. 主键约束:primary key
2. 非空约束:not null
3. 唯一约束:unique
4. 外键约束:foreign key
1. 创建表时添加约束
CREATE TABLE stu(
Id INT,
NAME VARCHAR(20) NOT NULL –name 为非空
)
2创建表完后,添加非空约束
ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;
3删除name的非空约束
ALTER TABLE stu MODIFY NAME VARCHAR(20);
1. 注意:
*唯一约束可以有NULL值,但是只能有一条记录为NULL
2. 在创建表时,条件唯一约束
CREATE TABLE stu(
Id INT,
Phone_number VARCHAR(20) UNIQUE
);
3 删除唯一约束
ALTER TABLE stu DROP INDEX phone_number;
4 在表创建完后,添加唯一约束
ALTER TABLE stu MODIFY phone_number VAECHAR(20) UNIQUE;
1.注意:
1. 含义:非空且唯一
2. 一张表只能有一个字段为主键
3. 主键就是表中记录的唯一标识
2. 在创建表时,添加主键约束
Create table stu(
Id int primary key , -- 给id添加主键约束
Name varchar(20)
);
3删除主键
--错误 alter table stu modify id int ;
ALTER TABLE stu DROP PRIMARY KEY;
4创建完表后,添加主键
ALTER TABLE stu MODIFY id INT PRIMARY KEY;
5自动增长:
1. 概念:如果某一列是数值类型的,使用 auto_increment 可以来完成值的自动增长
2. 在创建表时,添加主键约束,并完成自动增长
Create table stu(
Id int primary key auto_increment,--给id添加主键约束
Name varchar(20)
);
ALTER TABLE stu MODIFY id INT;
ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;
1. 在创建表时,可以添加外键
*语法:
Create table 表名(
......
外键列
Constraint 外键名称 foreign key (外键列名称) references 主表名称(主列表名称)
);
2删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
3创建表之后,添加外键
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主列表名称);
4级联操作