基本数据操作
基于SQL的常用关键字
- 数据查询:SELECT、FROM、WHERE、DISTINCT、ALL、AND、OR、NOT、JOIN
- 数据定义:CREATE、DROP、ALTER
- 数据操作:INSERT、UODATE、DELETE
- 数据控制:GRANT、REVORK
- 数据运算:AS、ORDER BY、DESC、ASC、BETWEEN
- 函数运算:AVG、MIN、MAX、SUM、COUNT、DISTINCT、GROUP BY、HAVING
基于数据库操作
1、创建数据库
html
CREATE DATABASE<数据库名>(<列名><数据类型>[CREATE_SPECIFICATION [, CREATE_SPECIFICATION] ...]
CREATE_SPECIFICATION:
[DEFAULT] CHARACTER SET CHARSET_NAME | [DEFAULT] COLLATE COLLATION_NAME;
DEMO:
html
~创建一个名称为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、创建视图
html
CREAT VIEW 视图名 (列表名) AS SELECT 查询语句
[WITH CHECK OPTION] ;//表示对UPDATE,INSERT,DELECT操作时保证更新、插入、删除行满足视图定义中的谓词条件
DEMO:
html
~创建一个名称为mydb1的视图。
create view mydb1 as select ProductID,ProductName from Products where Discontinued=No
3、查看数据库
html
显示数据库语句:
SHOW DATABASES
显示数据库创建语句:
SHOW CREATE DATABASE db_name
DEMO:
html
~查看当前数据库服务器中的所有数据库
show databases;
~查看前面创建的mydb2数据库的定义信息
show create database mydb3;
4、修改数据库
html
ALTER DATABASE <数据库名> [alter_specification [, alter_specification] ...]
alter_specification:
[DEFAULT] CHARACTER SET charset_name | [DEFAULT] COLLATE collation_name
DEMO:
html
~查看服务器中的数据库,并把其中mydb2字符集修改为utf8
alter database mydb2 character set utf8;
5、删除数据库
html
DROP DATABASE <数据库名>
DEMO:
html
~删除前面创建的mydb1数据库 drop database mydb1;
drop DATABASE mydb1;
基于数据表操作
1、创建表
html
CREATE TABLE table_name
(
FIELD1 DATATYPE,
FIELD2 DATATYPE,
FIELD3 DATATYPE,
)[CHARACTER SET 字符集] [COLLATE 校对规则]
FIELD:指定列名 DATATYPE:指定列类型
DEMO:
html
~创建一个员工表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、查看表
html
查看表结构:DESC TABNAME
查看当前数据库中所有表:SHOW TABLES
查看当前数据库表建表语句 SHOW CREATE TABLE TABNAME;
查看表的相关信息:SHOW TABLE STATUS
DEMO:
html
~显示employee表的信息
show table status like 'employee' \G;
3、修改表
html
ALTER TABLE<>[ADD<新列名><数据类型>[完整性约束条件]][DROP<完整性约束条件>][MODIFY<列名><数据类型>];
DEMO:
html
~用于向表中增加新列及新列相关的完整性约束条件,新的列增加成功后不带任何数据
alert table student add Scome date;
~用于向表中增加新列及新列相关的完整性约束条件,新的列增加成功后不带任何数据
alert table student modify Sage smallint ;
~用于修改原来的列定义,包括修改列名和数据类型,列数据类型修改后可能会丢失原有的数据
alert table student drop unique (Sname);
4、删除表
html
DROP TABLE <表名>
DEMO:
html
~删除前面创建的mydb1表;
drop TABLE mydb1;
5、创建索引
html
CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名> (<列名> [<次序][,<列名>[<次序]].....);
DEMO:
html
~给student表创建索引studentIndex
create unique index studentIndex on student (sno);
6、删除索引
html
DROP INDEX <索引名>;
DEMO:
html
~删除索引studentIndex
drop index studentIndex;
7、CRUD (1)SELECT
- 普通查询
html
SELECT [DISTINCT] *|{(<列名> [, <列名>...])} FROM <表名>;
DEMO:
html
~查询表中所有学生的信息。
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;
- WHERE DEMO:
html
~查询姓名为张飞的学生成绩
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;
- ORDER BY
html
SELECT (<列名> [, <列名>...]) FROM <表名> WHERE... ORDER BY <列名> ASC|DESC;
默认为asc升序排列
DEMO:
html
~按照默认的语文成绩升序输出
select name,chinese from exam order by chinese desc;
~对总分排序按从高到低的顺序输出
select name 姓名,chinese+math+english 总成绩 from exam order by 总成绩 desc;
(2)INSERT
html
INSERT INTO <表名> [(<列名> [, <列名>...])] VALUES (<值> [, <值>...]);
DEMO:
html
~使用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,'老大贴身人');
(3)UPDATE
html
UPDATE <表名> SET <列名>=expr1 [, <列名>=expr2 ...] [WHERE <条件>];
DEMO:
html
~将所有员工薪水修改为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='刘备';
(4)DELETE
html
DELETE FROM <表名> [WHERE <条件>];
DEMO:
html
~删除表中名称为’张飞’的记录。
delete from employee where name='张飞';
~删除表中所有记录。
delete from employee;
~使用truncate删除表中记录。
truncate table employee;