DDL 和 DQL

DDL

DDL : Data Definition Language 数据库定义语言
涉及的关键字 : create drop alter

增删改

-- 更改表名
 alter table table_01 rename table_00; -- 运行结果  > OK
 
 -- 更改字段名(列名)    更改表 table_00 改变杜智慧列为智慧 且类型更改为 varchar(32)
 alter table table_00 change 杜智慧 智慧 varchar(32); -- 运行结果 > OK
 
 -- 添加字段 add
 alter table table_00 add 杜智慧 varchar(32); -- 运行结果 > OK\
 
 -- 删除字段 列
 alter table table_00 drop 智慧; -- 运行结果 > OK

 -- 更改字段类型 (一般情况下能不改就不改)
 alter table table_00 modify 杜智慧 char; -- 运行结果 > OK
 
 -- 查看建表语句 
 show create table table_00;
--  CREATE TABLE `table_00` (
--   `杜炳楠` varchar(255) DEFAULT NULL,
--   `杜智慧` char(1) DEFAULT NULL
-- ) ENGINE=InnoDB DEFAULT CHARSET=utf8

六大约束

-- 约束 
-- 约束可以分为 实体完整性(主键) ,主键自增 , 关联完整性(外键) , 唯一约束 , 非空约束 , 检查约束(Check MySQL不支持) 六大约束

-- 主键 可以在创建表的时候添加 , 或者创建好之后用alter和add来添加
-- 建表时添加
create table table1 (
	id int primary key,
	`name` varchar(30),
	score decimal(18,2)
	-- 或者在这里
	-- primary key (id)
)
-- 建好表之后添加
alter table table1 add primary key (name); -- Multiple primary key defined 这时再运行就会报错 , 会显示定义了多个主键 
-- 删除主键
alter table table1 drop primary key ; -- 运行结果 > OK
-- 联合主键  设置为联合主键之后 , 只要两个里面有一个不一样就可以
alter table table1 add constraint PK_Name primary key (id , name); -- 运行结果 > OK 

-- 主键自增 auto_increment
-- 建表时
create table table1 (
	id int primary key auto_increment,
	`name` varchar(30),
	score decimal(18,2)
)
-- 建表后
alter table table1 modify id int auto_increment; -- 运行结果 > OK
-- 更改自增的起始值
alter table table1 auto_increment=1; -- 运行结果 > OK

-- 外键
create table table2 (
	id int primary key auto_increment,
	`name` varchar(30),
	score decimal(18,2),
	table1_id int,
	foreign key (table1_id) references table1(id)
); -- > OK  与SQLserver中不同 , 只能在建表语句的最后添加外键约束
-- 建表后
alter table table2 add foreign key (table1_id) references table1(id); 
 
-- 唯一约束
-- 建表时添加
create table table3 (
	id int primary key auto_increment unique,
	`name` varchar(30) ,
	score decimal(18,2),
	table1_id int,
	foreign key (table1_id) references table1(id)
	-- 或者 
	-- unique(id)
);
-- 建表后 
alter table table3 add unique(name); -- 运行结果 > OK

-- 非空约束
-- not null 和 default 经常一起使用 , 本来不设置数据的时候是null , 经过default会变成自己设置的默认值
-- 使用方法与上述唯一约束基本相同 , default'默认值'

-- 表的数量关系
-- 有一对一 , 一对多 , 多对一 , 多对多 
-- 当关系太多的时候 , 需要我们简化关系型数据库 
-- 什么也不管直接建表一般建的都是第一范式 , 还有第二范式 , 第三范式等等范式 
-- 想要建立一个高效率的数据库 , 掌握如何优化关系是必不可少的

DQL

DQL : Data Query Language,数据查询语言,主要用于查询表

基础查询和插入

-- 查询
select 列限定 from 某表(或者某查询结果) where 条件 group by 某列 having 筛选条件 order by(排序)desc/asc;
-- 插入
insert into 表名() values () -- 单个的话可以用value

-- 条件可以有 and or (and优先级高于or) >  >=  <   <=   <>(不等于)  =  between...and...(先小后大)  in(多条数据用in , 单条用=)
-- 模糊查询 like 类似于= 只是没那么精准 意思是像 , 所以大概像这个就把他列出来 在用like的时候 , 一般会与通配符一起使用
-- 通配符 % 匹配任意多个任意字符 , _ 匹配单个任意字符
-- 想专门查询%和_需要加\转义符 , 与java中一样

-- Limit 限制 
select 列限定 from 表限定 limit 条数; -- 查询出来的数据只显示这么多条
select 列限定 from 表限定 limit 开始值(不包含) ,条数; -- 起始值从0开始 , 0代表第一条

-- 通过Limit实现分页功能
-- pageSize表示每页要显示的条数,pageNumber表示页码,那么 返回第pageNumber页,每页条数为pageSize的sql语句
select * from studnet limit (pageNumber-1)*pageSize , pageSize; -- 第pageNumber页的第一条数据所在位置是(pageNumber-1)*pageSize

-- Union与 union all union all会将重复信息全部展示出来 Union会去重
-- 它俩的作用是把两张表或者更多表合并成一张表

常用函数

select version() ;-- 显示当前MySQL软件的版本
select database();-- 显示当前所处数据库是哪个
select  char_length('中国');-- 返回字符个数。
select  length('中国');-- 返回字符所占字节数,MySQL中,一个UTF8编码的汉字占3个字节
select  concat(  'a',  'b',  'c',  'd');-- 返回  'abcd'。字符串拼接函数
select  concat_ws(  '=',  'a',  'b',  'c');-- 返回  'a=b=c'。字符串拼接函数,第一个是拼接间隔符
select   upper('abcd');-- 返回ABCD。将参数中所有小写字母转换为大写
select  lower('ABCD');-- 返回abcd。将参数中所有大写字母转换为小写
select  substring(  '系统信息类',  1,  3  );-- 返回  系统信。第2个参数代表从1开始的第几个字符,第3个参数代表截取字符个数
select  trim('  abc  ');-- 返回 abc。用于删去参数左右的所有空格
select  curdate();-- 返回当前日期
select  curtime();-- 返回当前时间
select  now();-- 返回当前日期时间
select  unix_timestamp();-- 返回当前日期时间对应的时间戳(单位秒)
select  unix_timestamp('2018-05-24 20:00:00');-- 返回参数指定的日期时间对应的时间戳(单位秒)
select  from_unixtime(1527163397);-- 返回参数指定时间戳(单位秒)对应的日期时间
select  datediff(  '2018-05-23',  now()  );-- 返回两个参数对应日期相差的天数(用第一个参数减第二个参数)
select  adddate( now(), -2 );-- 返回指定天数前/后的日期时间(第一个参数是日期时间,第二个参数是天数,向后加是正数,向前减是负数)
select year('2019-02-24');-- 返回2019 获得年份
select month('2019-02-24')  -- 返回2 获得月份
select day('2019-02-24')  -- 返回 24 获取日
select  if(  <判断条件>,  <条件为真时的返回值>,  <条件为假时的返回值>  );相当于Java中的三目运算符<判断条件>  ?  <条件为真的返回值>  :  <条件为假的返回值>。
如select  if(1=1,  2,  3);-- 返回2。
select  ifnull(<表达式或者字段>,  <表达式或者字段为NULL时的返回值>);-- 通常用于给有可能有NULL的情况下的提供默认值。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值