特别提醒就是column_name是列名
table_name是表名
接下来直接上代码
SHOW DATABASES;
CREATE DATABASE zhiyong;
USE zhiyong;
CREATE TABLE database1(id INT,NAME VARCHAR(8),address VARCHAR(20),url VARCHAR(25),birthady DATA,employee CHAR(6),
sex CHAR(2),age INT,height INT)CHARACTER SET utf8;
CREATE TABLE database1
(
id INT,
myname VARCHAR(6),
sex CHAR(1),
age INT,
birthday DATE,
address VARCHAR(20),
employee CHAR(6)
)CHARACTER SET utf8;
SHOW TABLES;
DESC database1;
SELECT * FROM database1;
//向表中添加数据;
INSERT INTO database1 VALUES(123456,'李华','男','18','2000-1-16','广东省','打手');
SELECT * FROM database1;
INSERT INTO database1 VALUES(123457,'张飞','男','30','2000-1-16','广东省','保安');
INSERT INTO database1 VALUES(123457,'关羽','男','32','2000-1-16','江苏省','财神');
INSERT INTO database1 VALUES(123459,'刘备','男','30','2000-1-16','四川','老板');
INSERT INTO database1 VALUES(1234510,'赵云','男','30','2000-1-16','广东省','保安');
SELECT * FROM database1;
//在数据库中修改表
ALTER TABLE database1 ADD url VARCHAR(20);
//向数据库中添加了一列
INSERT INTO database1(url) VALUES('http://www.baidu.com');
SELECT * FROM database1;
//修改url的列将url的列名改为60
ALTER TABLE database1 MODIFY url VARCHAR(60);
DESC database1;
//删除列的命令
ALTER TABLE database1 DROP url;
//修改表名
RENAME TABLE database1 TO db1;
SHOW TABLES;
ALTER TABLE db1 ADD url VARCHAR(30);
INSERT INTO db1(url)VALUES('http://www.baidu.com');
SELECT * FROM db1;
//向表中添加唯一约束
ALTER TABLE db1 ADD UNIQUE(url);
DESC db1;
//添加唯一约束并起名字
ALTER TABLE db1 ADD CONSTRAINT mydb1 UNIQUE(sex,myname,id);
DESC db1;
//删除约束
ALTER TABLE db1 DROP INDEX mydb1;
desc db1;
//创建主键约束
alter table db1 add constraint myself primary key(sex);
desc db1;
alter table db1 add primary key(id);
//创建外键约束
//首先创建一个表
create table db2(id int,name varchar(5),birthday date)character set utf8;
select * from db2;
insert into db2 values(6666,'hu','2000-1-16');
alter table db1 add foreign key(id) references db2(id);
//创建一个db3的表用来实验默认约束
create table db3
(
id int ,
age int,
name varchar(10),
address varchar(20),
birthday date,
sex char(3),
url varchar(20) default 'http://www.baidu.com'
)character set utf8;
//查看表结构
desc db3;
//表的查询
select * from db3;
//向表中添加数据
insert into db3 values(88888,20,'孙悟空','花果山','1600-12-12','男','www.souhu.com');
select * from db3;
INSERT INTO db3 VALUES(88889,21,'李白','大唐','1300-12-12','男','www.baidu.com');
INSERT INTO db3 VALUES(88889,21,'杜甫','大唐','1300-12-13','男','www.xinlang.com');
//查询表
select * from db3;
//向表中添加默认约束
alter table db3 alter name set default 'huangtao';//这次添加默认约束失败
desc db3;
desc db3;
//删除约束default
alter table db3 alter name drop default;//确认删除
//创建一张检查约束专用的表
create table db4
(
name varchar(10) not null,
salary int,
age int,
primary key(age)
);
desc db4;
# //向表中添加一行数据
insert into db4 values('check',10000,18);
desc db4;
alter table db4 add constraint hutao check(age>15);#//约束添加成功
desc db4;
select * from db4;
# //sql中的select top子句规定要返回的记录数目
select * from db3;
select age from db3 limit 2;#规定要返回的记录数目取头两条记录
#sql中的通配符 用于在where子句中搜索指定的模式
select * from db1;
select * from db1 where birthday like '%2';
#返回任意的字符
desc db2;
#select * from db2 where type like '_ir_';
select * from db2;
select * from from db2 where id like '_6';
select * from db3;
select * from db3 where url like '_m';
select url from db3 where url like '_m';
select * from db3 where id like '^[^b]' ;#不一b开头的网站
select id from db3 where id like '^[A-W]';#以a-w开头的网站
#sql中的in操作符在where子句中规定多个值
#实例 语法select column-name from table_name where column_nmae in values(value1....);
/**
sql 中的union操作符用于将返回两条或多条语句的结果集条件,返回的语句类型要既有相同的长度,
相同的数据类型,相同的排列顺序,相同数目的列表达式,长度不一定相同
语法:
select column_name from table_name
union
select column_name from table_name
返回相同的结果集时用 union all
select column_name from table_name
where condition
union all
select column_nmae from table_name
**/
#查询表
select * from db5;
select * from db6;
#实例
select * from db5
union
select * from db6;
/*
sql中的select into子句将一个表中的数据复制到另一个表
从一个表中复制数据并插入另一个表
语法:
select column_name into
newtable in exteranandb
from table_name;
*/
select * from db2;
select * from db3;
# select * into db5 in name from db3;
/*
将表中的数据插入到新的表中
select * into newtable from table_name(原表);
将表中的列插入到新的表中
select column_name into newtable from table_name;
使用in操作符将数据复制并插入到新的数据库中
select * into newtable in 数据库名 from table_nmae;
#还可以复制指定用户达到新的表中
select column_anme into newtable from table_name where condition;
*/
select * from db5;
select * into bd6 from db5;
#在执行该语句时报错原因是mysql数据库不支持该语句操作
#解决方法是使用该语句Create table Table2 (Select * from Table1);
select * from db5;
create table bd6(select * from db5);
select * from db6;
#select into from 子句可以在另一种情况向创建一个新的空表仅仅要添加where子句使查询返时没有数据
/*
语法: select column_name into newtable from table where 1=0;
*/
#sql 中的insert into语句将一个表中的数据从一个表中复制到另一个表并且插入到现有的表中不会有任何的影响
/*
语法:insert into table1 select * from table2将表二中的所有数据复制到表一中
语法:insert into table1 column_nmae1 select column_name from table2;将表二中的列复制到表一中的列中//
*/
insert into db5 select * from db5;
desc db6;
select * from db5;
select * from db3;
insert into db3 id select id from db3;//此代码有误。
#sql中的drop index语句用于删除数据表中的索引
#mysql的语法 alter table table_name drop index index_name;
#drop index 语句删除数据表中的索引 alter table table_name drop index_name;
select * from db5;
alter table db5 drop index id;//错误该表中没有索引
#删除数据库中的表:drop table table_name;
#sql中删除数据库语法 drop database database_name;
#仅仅是删除数据表中的数据并不是删除数据表本身 turncate table table_name;/turncate database database_name;
#alter 用于现有数据表中添加修改或删除列
#alter table table_name drop column column_name删除删除表中的列
#alter table table_name add column_name datatype;向数据表中添加列;
#在sql中更改数据表中的类型mysql和oracle中使用modify关键字
#语法:alter table table_name modify column column_name datatype;
#实例:
desc db3;
alter table db3 modify column name char(10);
#向数据表中添加列
alter table db3 add salary int ;
/*
sql 中的into increment字段
会在新的记录插入表中时生成一个唯一的数字记录
我们通常希望每次插入新的记录时会主动创建主键字段的值
我们可以在表中创建一个自动的增量 auto-increment
*/
#语法:
/*
create table table_name
(
column_name datatype auto-increment,
.............
);
*/
create table db7
(
name char(6) ,
age int auto-increment,
sex char(1),
salary int
primary key(age)
)character set utf8;
#添加了自动增量的值我们在表中插入字段时不需要为添加了自动增量的列添加值他会自动添加值
#sql中null值的处理:
/*
sql中的null值表示丢失的未知部分
sql 中默认情况下列可以保存null值
sql中有is null 和 is not null是一对操作符
如果sql中的列是可选的那么我们可以插入一个记录或更行一个记录
sql中的null值是sql中的默认占位符
sql中不可以将null和0进行比较因为他们是不等价的
*/
#sql中null值的测试不能使用比较操作符而要使用is null 或 is not null
#向列中添加一个null值语法 select column_name1,column_name.... from table_name where column_name is/is not null null;
select * from db6;
select id,name,age,birthday,address,country from db6 where country is null;
desc db6;
#sql中的别名 sql中通常使用as关键字给表起别名
/*
sql中的别名提高了程序的可读性方便数据库管理员对数据库的管理
数据库中的列名是临时的实际名称不会发生变化
sql中的别名仅仅存在于查询期间
别名的使用是在特定的sql语句中重命名的表
别名用于对特定的sql查询重命名的列
*/
语法:select column_name as bieming
from table_name
where condition;
select column_name
from table_name as bieming
where condition;
#创建表并给表起别名
create table db8
(
id int,
name varchar(6),
telephone int,
address varchar(15),
sex char(2),
birthday date ,
salary int not null
)character set utf8;
select * from db8;
select telephone as tp from db8;
要去除 EMPLOYEES 表中的主键约束,可以使用下述命令
#在sql中我们如何删除约束使用alter table table_name drop constraint employee_pk;
/*
sql中的克隆数据表在一些情况下你可能需要拷贝某张表但是创建一张表又不能满足你的需要
因为复制的表可能需要一样的索引一样的数据类型因此mysql中推出了克隆数据表来帮你解决该问题
mysql中使用show create table table_name命令来获取指定原结构索引等信息创建的table语句
*/
show create table db8 ;
#将语句中的表名改为需要克隆的表名你就可以获得与原结构相同的表如果你想获取表中的数据使用 insert into select语句
/*
mysql中的索引
创建索引的语句是create index index_name on table_name(column_name);//单列索引
sql中的唯一索引不仅可以保持数据的完整性还可以提高数据的查询效率单数数据中的唯一索引不能添加重复值
创建唯一索引的语法:
create unique index index_name on table_name (column_name);
sql中的聚集索引表中的多个列中创建:
create index index_name on table_name (column_name1,column_name2...);
sql中的隐式索引:
是由数据库服务器在创建某些对象是生成的主键约束和唯一约束的数据库会自动生成索引
删除索引的命令:
drpo index table_name.index_name;
删除索引时要特别注意因为数据库的性能可能会因此减低或提高
*/
select * from db5;
create index 66 on db5;//
/*
sql中的函数aggeregate函数
avg ();返回平均值
count ()返回行数
min()返回最小值
max()返回最大值
sun()返回和
first() 返回第一个记录的值
last() 返回最后一个记录的值
sql中的scalar函数基于输入值返回一个单一的值
UCase()将某个字段转换为大写
lcase()将某个字段转换为小写
mid() 从某个文本字段提取字符
len() 返回某个文本字段的长度
round() 对某个指定的小数位进行四舍五入
now() 返回当前系统的日期和时间
format() 格式化某个日期的显示方式
sql中max函数的语法
select max(coiumn_name)
from table_name
where condition;
2:
select min(column_name)
from table_name
where condition;
count 的使用:返回符合条件的指定的行数
语法:返回指定列中值的数目null不记
select count(column_name)
from table_name as 别名
where condition;
语法:2 返回表中的记录数
select count(*) from table_name
语法3:返回指定列中不同值的数目
select count(distinct column_name) from table_name
语法4:返回指定表中不同数目的值//错误
select count(distinct * )from table_name
sql关于平均数的语法“
select avg(column_name)
from table_name
where condition;
sql 中的sun函数:
select sun(column_name)
from table_name
where condition;
*/
#使用max的实例
select * from db5;
select max(id) as maxlarge from db5;
#count函数的实例1
select count(country) from db5;//8行
#count实例2:
select count(*) from db5;
#count实例3:
select count(distinct name) from db3;//3
#count实例4:
select count(distinct *) from db5;//错误
/*
sql中的返回索引关键字
fleld();FIELD()函数返回的索引(从1开始的位置)的str在str1,str2,str3,...列表中。如果str没有找到,
则返回0。
就是用第一个参数str,跟后面的N个字符串参数中寻找,如果寻找到一模一样的字符串,则返回其索引位置
fleld(str,str1,str2...);
SQL 中的group by()子句常常需要结合aggregate函数根据一个或多个列的结果集进行分组
语法:select column_name from table_name where condition group by column_name;
*/
#实例:
select * from db5;
select country from db5 group by country; //china
#实例:
select max(age) from db5 group by age;
/*
sql中添加having函数的作用因为where子句不能和集合函数一起使用
where关键字不能用于聚合函数
having子句添加到sql中可以用于聚合函数
语法:
select column_name from table_name
where condition
group by column_name
having condition
order by column_name;
#having可以说是在使用聚合函数的时候替代where关键字
*/
#实例:
select * from db2;
select count(id) from db2
group by id
having count(id) >666;//count(id)
#sql中的字符串
#lower和lcase将字符串中的大写字符的字母转换为小写字母
select lower('HELLO WORD my name is huangyu i want to a 女朋友');
select lcase('HELLO WORD MY NAME IS HUANG TAO I LOVE YOU');
#upper和Ucase将字符串中的小写字母转换为大写字母
select upper('hi my name is huang tao i come from huang dong in china i love eat');
select ucase('hello word is huang tao i come from huang tao in china i love eat');
#sql中的mid函数用于从文本字段中提取字符
mid();
#实例:
select mid(column_name,start,length);
#column_name 提取字段的字符 start 开始的位置 要返回的字符数如果省略mid函数返回剩余文本
select mid(age,1,8)from db5;
select * from db5;
#sql中的len函数 返回文本字段中值的长度
select id, len(name)from db5;//错误
#sql中的round函数把数值字段舍入为指定的小数数位
#语法:select round(column_name,要舍入的小数数位) from table_name;
#实例:
select round(age,2) from db5;
select * from db5;
#sql中的null函数now()返回当前日期和时间
#实例:
select now();//2020-04-16 15:03:50
#语法: select now() from table_name;
select id ,name, now() from db5;
#sql中的format函数
#语法:select format(时间 格式) from table_name;
#实例:SELECT ProductName, Price, FORMAT(Now(),'YYYY-MM-DD') AS PerDate
FROM Products;
select * from db5;
select id,name,age,format('2020-4-15','YYYT-MM-DD')from db5;
#sql中的sqrt函数用于计算任何数的平方根
#语法:select sqrt(数值);
select sqrt(66);//8.1240384...
#你看到的是浮点数因为sql是以浮点数类型进行平方根进行计算的
#sql中的rand函数用于产生0和之间的随机数
#语法:select rand(),rand(),rand();/select rand(1),rand(2),rand(3);
/*当以某个整数值作为参数来调用的时候,RAND() 会将该值作为随机数发生器的种子。
对于每一个给定的种子,RAND() 函数都会产生一列可以复现的数字
*/
select rand(),rand(),rand();
select rand(1),rand(2),rand(3);
#sql中的order by rand()用来对一组记录进行随机化排序
select age from db5 order by rand();
/*
sql中的concat函数用于将两个字符串拼接为一个字符串
select concat('hfdjih','hfduier');
还可以用于将表中的字段连接在一起
select concat(id,name,salary)from db5
*/
select concat('hello','word');//helliword
select * from db3;
select concat(id,age,name)from db3;
/*
MySQL 也拥有类似 ISNULL() 的函数。不过它的工作方式与微软的 ISNULL() 函数有点不同。
在 MySQL 中,我们可以使用 IFNULL() 函数,如下所示:
*/
#SQL ISNULL()、NVL()、IFNULL() 和 COALESCE() 函数
#语法:SELECT column_name,column_name*(column_name+IFNULL(column_name,0))
#FROM table_name
/*
sql中的字符串替代函数 sql replace()
语法:update table_name set column_name1=replace(column_name1,'原值',‘替代值’);
replace函数的定义 replace(original-string,search-string,replace-string);
*/
select * from db5;
update db5 set age=replace(age,'15','25');
/*
sql中trim函数去除字符串头尾空格
mysql中含有:rtrim将所有字符串结尾的空白移除
mysql中含有:ltrim将所有字符串起头的空白移除
select trim('');
select ltrim('');
select ltrim('');
*/
select trim( ' helloword ' );
select ltrim ( ' helloword ' );
select rtrim( ' helloword ' );