mysql-SQL语法
细节查询:http://www.w3school.com.cn/sql/index.asp
1 DDL-data difinition lanuage数据定义语句
使我们有能力创建或删除表格,我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束:
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引
1.1 CREATE TABLE
create table server_fun_categ ( ID int(11) key auto_increment, server_categ_name char(20) NOT NULL )
create table server_app_categ( ID int(11) KEY auto_increment, server_categ_id int(11) NOT NULL, server_app_name char(30) NOT NULL, FOREIGN KEY(server_categ_id) REFERENCES server_fun_categ(ID) )
create table server_list( server_name char(13) NOT NULL, server_wip char(15) NOT NULL, server_lip char(15) NOT NULL, server_op char(10) NOT NULL, server_app_id int(11) NOT NULL, FOREIGN KEY(server_app_id) REFERENCES server_app_categ(ID) )
#为了设立自动运维平台,设计MySQL表,并定义好字段名,字段类型,字段约束。设定好主键,外键(存储引擎默认为innodb,字符集为latin1)
CREATE TABLE atm_acc( id int(10) auto_increment, username VARCHAR(100) NOT NULL, passwd VARCHAR(100) NOT NULL, PRIMARY KEY(id), UNIQUE KEY(id), UNIQUE KEY(username) ) #创建account表,id唯一且自增,username唯一。 #unique key(id,username)表示联合唯一,就是id必须唯一,但id不一样的时候username可以一样。
2 DML-data manipulation language数据操作语句
查询、更新、删除和插入指令构成了 SQL 的 DML 部分:
SELECT - 从数据库表中获取数据
UPDATE - 更新数据库表中的数据
DELETE - 从数据库表中删除数据
INSERT INTO - 向数据库表中插入数据
2.1 SELECT
2.1.1 条件查询
包含
SELECT * FROM SvrConfig WHERE description LIKE '%redis%'
等于、排序
SELECT * FROM SvrConfig WHERE type = 68 ORDER BY subtype DESC
限制
SELECT * from GameRooms limit 0,1000
SELECT * from GameRooms limit 1000,1000
在列表中
SELECT * from SvrConfig where id in (100,101) limit 0,1000
2.1.2 多表查询
SELECT GameRooms.roomname AS RoomName, GameRooms.roomid AS RoomID, Servers.ip AS ServerIP FROM GameRooms, SvrConfig, Servers WHERE GameRooms.appid = SvrConfig.id AND SvrConfig.svrid = Servers.id
#JOIN & KEY。一个表的字段和另一个表的主键保持一致(字段名要不一样。)
SELECT GameRooms.roomid AS RoomID, GameRooms.roomname AS RoomName, SvrConfig.svrid AS ServerID FROM GameRooms JOIN SvrConfig ON GameRooms.appid = SvrConfig.id #INNER JOIN。和上个查询功能一致
SELECT SvrConfig.description, SvrConfig.gameid, Servers.ip, SvrConfig.dir FROM SvrConfig LEFT JOIN Servers ON SvrConfig.svrid = Servers.id WHERE SvrConfig.svrgroupid = 1000
#LEFT JOIN:得到A表的所有数据和满足条件的B表部分数据。
2.2 insert
INSERT INTO SvrConfig ( id, type, subtype, svrid, PORT, config, gameid, description, svrgroupid, active ) VALUES ( 3151, 68, 1004, 22, 10004, 'process=\'/data/\';Need=1;', 40166, 'jabbok_test', 5000, 1 ) #不是所有字段都要插入数据,所以把要插入的字段标出来。 #字符串要用''单引号。如果字符串里面有单引号,就用\转义。
SQL函数
MAX(expr)
SELECT MAX(id) + 1 FROM SvrConfig
#获取字段中的最大值,我要在字段中自动插入一个自增的数,就需要先获得max(column_name)
CONCAT(str1,str2,...)
字符串连接
CAST(expr AS type)
数据类型转换
SELECT CONCAT( 'ip=', Servers.ip, ';port=', CAST(SvrConfig.`port` AS CHAR), ';appid=', Servers.localipmask, ';' ) FROM Servers,SvrConfig WHERE SvrConfig.type = 68 AND Servers.idcid = 0 AND SvrConfig.svrid = Servers.id
#把两张表中的信息按照规则筛选出来,输出为一个char。