博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sql语句 MySQL
阅读量:5255 次
发布时间:2019-06-14

本文共 7068 字,大约阅读时间需要 23 分钟。

1.操作数据库	(1)创建数据库		CREATE  DATABASE  [IF NOT EXISTS] db_name [create_specification [, create_specification] ...] 		create_specification:    		  [DEFAULT] CHARACTER SET charset_name  |   [DEFAULT] COLLATE collation_name 		~创建一个名称为mydb1的数据库。		    create database mydb1;		~创建一个使用gbk字符集的mydb2数据库。		    create database mydb2 character set gbk;		~创建一个使用utf8字符集,并带校对规则的mydb3数据库。		    create database mydb3 character set utf-8 collate utf8_bin;	(2)查看数据库		显示数据库语句:			SHOW DATABASES		显示数据库创建语句:			SHOW CREATE DATABASE db_name                ~查看当前数据库服务器中的所有数据库 			show databases;	       ~查看前面创建的mydb2数据库的定义信息			show create database mydb3;	(3)修改数据库		ALTER  DATABASE  [IF NOT EXISTS] db_name  [alter_specification [, alter_specification] ...] 		alter_specification:    		    [DEFAULT] CHARACTER SET charset_name  |   [DEFAULT] COLLATE collation_name				~查看服务器中的数据库,并把其中mydb2字符集修改为utf8		alter database mydb2 character set utf8;	(4)删除数据库		DROP DATABASE  [IF EXISTS]  db_name 				~删除前面创建的mydb1数据库 drop database mydb1;		drop database mydb1;	(5)选择数据库		进入数据库:use db_name;		查看当前所选的数据库: select database();2.操作表	(1)创建表		CREATE TABLE table_name		(			field1  datatype,			field2  datatype,			field3  datatype,		)[character set 字符集] [collate 校对规则]		field:指定列名 datatype:指定列类型			~创建一个员工表employee 			create table employee(				id int primary key auto_increment,				name varchar(20) unique,				gender bit not null,				birthday date,				entry_date date,				job varchar(40),				salary double,				resume text			);	(2)查看表		查看表结构:desc tabName		查看当前数据库中所有表:show tables		查看当前数据库表建表语句 show create table tabName;		(3)修改表		ALTER TABLE table  ADD/MODIFY/DROP/CHARACTER SET/CHANGE  (column datatype [DEFAULT expr][, column datatype]...);		*修改表的名称:rename table 表名 to 新表名;		~在上面员工表的基本上增加一个image列。			alter table employee add image blob;		~修改job列,使其长度为60。			alter table employee modify job varchar(60);		~删除gender列。			alter table employee drop gender;		~表名改为user。			rename table employee to user;		~修改表的字符集为gbk			alter table user character set gbk;		~列名name修改为username			alter table user change name username varchar(20);	(4)删除表		DROP TABLE tab_name;		~删除user表			drop table user;3.操作表记录CRUD	(1)INSERT		INSERT INTO table [(column [, column...])] VALUES (value [, value...]);				插入的数据应与字段的数据类型相同。		数据的大小应在列的规定范围内,例如:不能将一个长度为80的字符串加入到长度为40的列中。		在values中列出的数据位置必须与被加入的列的排列位置相对应。		字符和日期型数据应包含在单引号中。		插入空值:不指定或insert into table value(null)		如果要插入所有字段可以省写列列表,直接按表中字段顺序写值列表		~使用insert语句向表中插入三个员工的信息		insert into employee (id,name,gender,birthday,entry_date,job,salary,resume)values (null,'张飞',1,'1999-09-09','1999-10-01','打手',998.0,'老大的三弟,真的很能打');		insert into employee values (null,'关羽',1,'1998-08-08','1998-10-01','财神爷',9999999.00,'老大的二弟,公司挣钱都指着他了');		insert into employee values (null,'刘备',0,'1990-01-01','1991-01-01','ceo',100000.0,'公司的老大'),(null,'赵云',1,'2000-01-01','2001-01-01','保镖',1000.0,'老大贴身人');	(2)UPDATE		UPDATE 	tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition]  				UPDATE语法可以用新值更新原有表行中的各列。		SET子句指示要修改哪些列和要给予哪些值。		WHERE子句指定应更新哪些行。如没有WHERE子句,则更新所有的行			~将所有员工薪水修改为5000元。			update employee set salary = 5000;		~将姓名为’张飞’的员工薪水修改为3000元。			update employee set salary = 3000 where name='张飞';		~将姓名为’关羽’的员工薪水修改为4000元,job改为ccc。			update employee set salary=4000,job='ccc' where name='关羽';		~将刘备的薪水在原有基础上增加1000元。				update employee set salary=salary+1000 where name='刘备';				  	(3)DELETE				如果不使用where子句,将删除表中所有数据。		Delete语句不能删除某一列的值(可使用update)		使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table语句。		同insert和update一样,从一个表中删除记录将引起其它表的参照完整性问题,在修改数据库数据时,头脑中应该始终不要忘记这个潜在的问题。			外键约束		删除表中数据也可使用TRUNCATE TABLE 语句,它和delete有所不同,参看mysql文档。		delete from tbl_name [WHERE where_definition]    		~删除表中名称为’张飞’的记录。			delete from employee where name='张飞';		~删除表中所有记录。			delete from employee;		~使用truncate删除表中记录。			truncate table employee;	(4)SELECT		~1.基本查询			SELECT [DISTINCT] *|{column1, column2. column3..} FROM	table;						~查询表中所有学生的信息。				select * from exam;			~查询表中所有学生的姓名和对应的英语成绩。				select name,english from exam;			~过滤表中重复数据				 select distinct english from exam;			~在所有学生分数上加10分特长分显示。				select name , math+10,english+10,chinese+10 from exam;			~统计每个学生的总分。				select name ,english+math+chinese from exam;			使用别名表示学生总分。				select name as 姓名 ,english+math+chinese as 总成绩 from exam;				select name 姓名 ,english+math+chinese 总成绩 from exam;			select name english from exam;		~2.使用where子句进行过滤查询			~查询姓名为张飞的学生成绩				select * from exam where name='张飞';			~查询英语成绩大于90分的同学				select * from exam where english > 90;			~查询总分大于230分的所有同学				select name 姓名,math+english+chinese 总分 from exam where math+english+chinese>230;			~查询英语分数在 80-100之间的同学。				select * from exam where english between 80 and 100;			~查询数学分数为75,76,77的同学。				select * from exam where math in(75,76,77);			~查询所有姓张的学生成绩。				select * from exam where name like '张%';				select * from exam where name like '张__';			~查询数学分>70,语文分>80的同学。				select * from exam where math>70 and chinese>80;		~3.使用order by关键字对查询结果进行排序操作			SELECT column1, column2. column3.. FROM	table where... order by column asc|desc;			asc 升序 -- 默认就是升序			desc 降序			~对语文成绩排序后输出。				select name,chinese from exam order by chinese desc;			~对总分排序按从高到低的顺序输出				select name 姓名,chinese+math+english 总成绩 from exam order by 总成绩 desc;			~对姓张的学生成绩排序输出				select name 姓名,chinese+math+english 总成绩 from exam where name like '张%' order by 总成绩 desc;		~4.聚合函数			(1)Count -- 用来统计符合条件的行的个数				~统计一个班级共有多少学生?					select count(*) from exam;				~统计数学成绩大于90的学生有多少个?					select count(*) from exam where math>70;				~统计总分大于230的人数有多少?					select count(*)from exam where math+english+chinese > 230;			(2)SUM -- 用来将符合条件的记录的指定列进行求和操作				~统计一个班级数学总成绩?					select sum(math) from exam;				~统计一个班级语文、英语、数学各科的总成绩					select sum(math),sum(english),sum(chinese) from exam;				~统计一个班级语文、英语、数学的成绩总和					select sum(ifnull(chinese,0)+ifnull(english,0)+ifnull(math,0)) from exam;					在执行计算时,只要有null参与计算,整个计算的结构都是null					此时可以用ifnull函数进行处理				~统计一个班级语文成绩平均分					select sum(chinese)/count(*) 语文平均分 from exam;			(3)AVG -- 用来计算符合条件的记录的指定列的值的平均值				~求一个班级数学平均分?					select avg(math) from exam;				~求一个班级总分平均分?					select avg(ifnull(chinese,0)+ifnull(english,0)+ifnull(math,0)) from exam;			(4)MAX/MIN -- 用来获取符合条件的所有记录指定列的最大值和最小值				~求班级最高分和最低分					select max(ifnull(chinese,0)+ifnull(english,0)+ifnull(math,0)) from exam;					select min(ifnull(chinese,0)+ifnull(english,0)+ifnull(math,0)) from exam;		~5.分组查询			~对订单表中商品归类后,显示每一类商品的总价				select product,sum(price) from orders group by product;			~询购买了几类商品,并且每类总价大于100的商品				select product 商品名,sum(price)商品总价 from orders group by product having sum(price)>100;							where子句和having子句的区别:				where子句在分组之前进行过滤having子句在分组之后进行过滤				having子句中可以使用聚合函数,where子句中不能使用				很多情况下使用where子句的地方可以使用having子句进行替代			~查询单价小于100而总价大于150的商品的名称				select product from orders where price<100 group by product having sum(price)>150;		~~sql语句书写顺序: 			select from where groupby having orderby		~~sql语句执行顺序:			from where select group by having order by    				~~备份恢复数据库			备份:	在cmd窗口下 mysqldump -u root -p dbName>c:/1.sql			恢复:	方式1:在cmd窗口下 mysql -u root -p dbName

转载于:https://www.cnblogs.com/wanghuaijun/p/5853983.html

你可能感兴趣的文章
Codeforces Round #215 (Div. 1) B. Sereja ans Anagrams 匹配
查看>>
CDOJ 1251 谕神的密码 贪心
查看>>
CMYK列印颜色
查看>>
matplotlib 进阶之Tight Layout guide
查看>>
多线程 测试
查看>>
web提前做好测试
查看>>
tp5.1 本地正常, 线上route.php不起作用的问题
查看>>
[笔记] 斯特林公式
查看>>
opencv删除轮廓
查看>>
简谈【自动化协议逆向工程技术的当前趋势】
查看>>
2018.4.2 看k&r
查看>>
实战分区表:SQL Server 2k5&2k8系列(三)
查看>>
JS简单的倒计时(代码优化)
查看>>
CSS2.0实现面包屑
查看>>
css font的简写规则
查看>>
CSS| 框模型-輪廓
查看>>
kafka报错 Replication factor: 3 larger than available brokers: 0.
查看>>
linux查看和修改PATH环境变量的方法
查看>>
浅谈自定义UITextField的方法
查看>>
笔记本设置无线热点
查看>>