1 mysql常用语句
1.1 数据库的基本操作命令:
开启MySQL服务 net start mysql
关闭MySQL服务 net stop mysql
显示数据库 mysql->show databases;
创建数据库 mysql->create database db;
删除数据库 mysql->drop database db;
选择数据库 mysql->use db
导出数据库 mysqldump -uroot -p123456 –databases dbname >/root/ test.db
导入数据库 mysqlimport -uroot -p123456 或 mysql -uroot -p123456
Mysql>source /root/test.db
1.2 数据表的基本操作命令:
1.2.1 对表的操作
创建表 mysql->create table mytable(name varchar(20),sex(char(1),birth date);
删除表 mysql->drop table mytable;
更改表名 mysql->alter table mytable RENAME new_name
显示表的内容 mysql->show tables;
显示表的结构 mysql->describe mytable;
导出数据表 mysqldump -uroot -p123456 –databases dbname –table tabname >/root/ test.db
导入数据表 mysql -uroot -p123456
Mysql>use db1
Mysql>source /root/test.db
1.2.2 对列的操作:
在一个表中
增加一条字段 mysql->alter table yourtable add col_name varchar(20) not null;
删除一个字段 mysql->alter table yourtable drop col_name ;
更改列定义 mysql->alter table yourtable MODIFY age varchar(20) not null;
更改列名和定义 mysql->alter table yourtable CHANGE address(colum old name) addr(new nae) varchar(20) not null;
1.2.3 对行的操作:
插入一条记录 mysql->insert into mytable values (‘summer’,’m’,’1983-08-24’);
删除一条记录 mysql->delete from mytable where name=’summer’;
修改一条记录 mysql->update mytable set sex=’vm’ where name=’summer’;
插入多条记录 mysql->insert into mytable values (”aa’,’m’) ,(‘sr’,’ms’),(’s’,’ls’);
mysql->insert into mytable select *from yourtable;(这种形式的INSERT 语句中,新行的数据值不是在语句正文中明确地指定的.而是语句中指定的一个数据库查询. 该查询的逻辑限制:»查询不能含有ORDER BY子句. »查询结果应含有与INSERT语句中列数目相同的列,且数据类型必须逐列兼容. )
添加主键: Alter table tabname add primary key(col)
删除主键: Alter table tabname drop primary key(col)
创建视图:create view viewname as select statement
删除视图:drop view viewname
创建索引:create [unique] index idxname on tabname(col….)
删除索引:drop index idxname
注:索引是不可更改的,想更改必须删除重新建。
1.2.4 聚合函数
排序:select * from table1 order by field1,field2 [desc]
总数:select count as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1
1.2.5 关键字
- AS 在查询结果中显示新的列名
select name as ‘姓名’ from students order by age - Where被用来规定一种选择查询的标准
语法:
SELECT column FROM table WHERE column condition value
下面的操作符能被使用在WHERE中:
=,<>,>,<,>=,<=,BETWEEN,LIKE
注意: 在某些SQL的版本中不等号< >能被写作为!=
解释:
SELECT语句返回WHERE子句中条件为true的数据
例:
从” Persons”表中选出生活在” Sandnes” 的人
SELECT * FROM Persons WHERE City=’Sandnes’
3.And & Or :在WHERE子句中AND和OR被用来连接两个或者更多的条件
解释:
AND在结合两个布尔表达式时,只有在两个表达式都为 TRUE 时才传回 TRUE
OR在结合两个布尔表达式时,只要其中一个条件为 TRUE 时,OR便传回 TRUE
例:
SELECT * FROM Persons WHERE FirstName=’Tove’ AND LastName=’Svendson’
SELECT * FROM Persons WHERE firstname=’Tove’ OR lastname=’Svendson’ - Between…And用途:指定需返回数据的范围
语法:
SELECT column_name FROM table_name
WHERE column_name
BETWEEN &#118;alue1 AND &#118;alue2
例:
SELECT * FROM Persons WHERE LastName BETWEEN ‘Hansen’ AND ‘Pettersen’
5.Distinct用途:DISTINCT关键字被用作返回唯一的值
解释:
当column-name(s)中存在重复的值时,返回结果仅留下一个
语法:
SELECT DISTINCT column-name(s) FROM table-name
例:SELECT DISTINCT Company FROM Orders
6.Order by用途:指定结果集的排序
解释:
指定结果集的排序,可以按照ASC(递增方式排序,从最低值到最高值)或者DESC(递减方式排序,从最高值到最低值)的方式进行排序,默认的方式是ASC
语法:
SELECT column-name(s) FROM table-name ORDER BY { order_by_expression [ ASC | DESC ] }
例: SELECT Company, OrderNumber FROM Orders - Group by用途:对结果集进行分组,常与汇总函数一起使用
语法:
SELECT column,SUM(column) FROM table GROUP BY column
例:SELECT Company,SUM(Amount) FROM Sales GROUP BY Company - Having用途:指定群组或汇总的搜寻条件
解释:
HAVING 通常与 GROUP BY 子句同时使用。不使用 GROUP BY 时,HAVING 则与 WHERE 子句功能相似。
语法:
SELECT column,SUM(column) FROM table
GROUP BY column
HAVING SUM(column) condition &#118;alue
例:SELECT Company,SUM(Amount) FROM Sales GROUP BY Company HAVING SUM(Amount)>10000 - 几个高级查询运算词
A: UNION 运算符
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
B: EXCEPT 运算符
EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
C: INTERSECT 运算符
INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
注:使用运算词的几个查询结果行必须是一致的。
10..between…and:select * from students where age between 20 and 30
11.like:select * from students where name like ‘李%’ (注意查询条件中有“%”,则说明是部分匹配,而且还有先后信息在里面,即查找以“李”开头的匹配项。所以若查询有“李”的所有对象,应该命令:’% 李%’;若是第二个字为李,则应为’李%’或’李’或’李‘。)
e.[]匹配检查符:select * from courses where cno like ‘[AC]%’ (表示或的关系,与”in(…)”类似,而且”[]”可以表示范围,如:select * from courses where cno like ‘[A-C]%’)注:关于这个字符我在mysql里用的时候mysql把它当两个普通自符处理的。
[^]stockname like ‘[^F-M]%’ ——— (^排除指定范围)
1.2.6 外连接
1、left (outer) join:
左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
2:right (outer) join:
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
3:full/cross (outer) join:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
4:inner join
内连接:只显示两者共有的记录
2.1 事务
2.1.1 事务的属性
事务具有ACID属性
即 Atomic原子性, Consistent一致性, Isolated隔离性, Durable永久性
原子性
就是事务应作为一个工作单元,事务处理完成,所有的工作要么都在数据库中保存下来,要么完全
回滚,全部不保留
一致性
事务完成或者撤销后,都应该处于一致的状态
隔离性
多个事务同时进行,它们之间应该互不干扰.应该防止一个事务处理其他事务也要修改的数据时,
不合理的存取和不完整的读取数据
永久性
事务提交以后,所做的工作就被永久的保存下来
2.1.2 事务处理类型
自动处理事务
系统默认每个T-SQL命令都是事务处理 由系统自动开始并提交
隐式事务
当有大量的DDL 和DML命令执行时会自动开始,并一直保持到用户明确提交为止,切换隐式事务可以用SET IMPLICIT_TRANSACTIONS
为连接设置隐性事务模式.当设置为 ON 时,SET IMPLICIT_TRANSACTIONS 将连接设置为隐性事务模式。当设置为 OFF 时,则使连接返回到自动提交事务模式
用户定义事务
由用户来控制事务的开始和结束 命令有: begin tran commit tran rollback tran 命令
分布式事务
跨越多个服务器的事务称为分布式事务,sql server 可以由DTc microsoft distributed transaction coordinator
来支持处理分布式事务,可以使用 BEgin distributed transaction 命令启动一个分布式事务处理