ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

DDL 和 DQL

2021-02-04 22:29:42  阅读:184  来源: 互联网

标签:table1 -- alter DDL DQL table id select


这里写目录标题

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的情况下的提供默认值。

标签:table1,--,alter,DDL,DQL,table,id,select
来源: https://blog.csdn.net/dbndbndbn/article/details/113665755

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有