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。

 

posted @ 2018-03-30 16:51  jabbok  阅读(274)  评论(0编辑  收藏  举报