以下是一些重要的SQL快速参考,有关SQL的语法和在标准SQL上增加的特性,请查询MySQL手册。
1.创建表
表是数据库的最基本元素之一,表与表之间可以相互独立,也可以相互关联。创建表的基本语法如下:
create table table_name
(column_name datatype {identity |null|not null},
…)
其中参数table_name和column_name必须满足用户数据库中的识别器(identifier)的要求,参数datatype是一个标准的SQL类型或由用户数据库提供的类型。用户要使用non-null从句为各字段输入数据。
create table还有一些其他选项,如创建临时表和使用select子句从其他的表中读取某些字段组成新表等。还有,在创建表是可用PRIMARY KEY、KEY、INDEX等标识符设定某些字段为主键或索引等。
书写上要注意:
在一对圆括号里的列出完整的字段清单。
字段名间用逗号隔开。
字段名间的逗号后要加一个空格。
最后一个字段名后不用逗号。
所有的SQL陈述都以分号""结束。
例:
mysql>CREATE TABLE test (blob_col BLOB, index(blob_col(10)))
2.创建索引
索引用于对数据库的查询。一般数据库建有多种索引方案,每种方案都精于某一特定的查询类。索引可以加速对数据库的查询过程。创建索引的基本语法如下:
create index index_name
on table_name (col_name[(length)],... )
例:
mysql>CREATE INDEX part_of_name ON customer (name(10))
3.改变表结构
在数据库的使用过程中,有时需要改变它的表结构,包括改变字段名,甚至改变不同数据库字段间的关系。可以实现上述改变的命令是alter,其基本语法如下:
alter table table_name alter_spec [, alter_spec ...]
例:
mysql>ALTER TABLE t1 CHANGE a b INTEGER
4.删除数据对象
很多数据库是动态使用的,有时可能需要删除某个表或索引。大多数数据库对象可以下面的命令删除:
drop object_name
mysql>DROP TABLE tb1
5.执行查询
查询是使用最多的SQL命令。查询数据库需要凭借结构、索引和字段类型等因素。大多数数据库含有一个优化器(optimizer),把用户的查询语句转换成可选的形式,以提高查询效率。
值得注意的是MySQL不支持SQL92标准的嵌套的where子句,即它只支持一个where子句。其基本语法如下:
SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [HIGH_PRIORITY] [DISTINCT | DISTINCTROW | ALL]
select_expression,... [INTO {OUTFILE | DUMPFILE} 'file_name' export_options] [FROM table_references [WHERE where_definition] [GROUP BY col_name,...] [HAVING where_definition] [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...] [LIMIT [offset,] rows] [PROCEDURE procedure_name] ]
其中where从句是定义选择标准的地方,where_definition可以有不同的格式,但都遵循下面的形式:
字段名 *** 作表达式
字段名 *** 作字段名
在第一种形式下,标准把字段的值与表达式进行比较;在第二种形式下,把两个字段的值进行比较。根据所比较的数据类型,search_condition中的 *** 作可能选以下几种:
= 检查是否相等
!= 检查是否不等
>(或>=) 检查左边值是否大于(或大于等于)右边值
<(或<=) 检查左边值是否小于(或小于等于)右边值 [not] between 检查左边值是否在某个范围内 [not] in 检查左边是否某个特定集的成员 [not] like 检查左边是否为右边的子串
is [not] null 检查左边是否为空值
在这里,可以用通配符_代表任何一个字符,%代表任何字符串。使用关键字、和可以生成复杂的词,它们运行检查时使用布尔表达式的多重标准集。
例:
mysql>select t1.name, t2.salary from employee AS t1, info AS t2 where t1.name = t2.name
mysql>select college, region, seed from tournament
ORDER BY region, seed
mysql>select col_name from tbl_name WHERE col_name >0
SQL 语法结构包括:
例如: SELECT与select、 Select是相同的。
数据定义语言(Data Definition Language,DDL)是 SQL 语言集中负责数据结构定义与数据库对象定义的语言。
DDL 的主要功能是 定义数据库对象 。
DDL 的核心指令是CREATE 、 ALTER 、 DROP 。
数据 *** 纵语言(Data Manipulation Language, DML)是用于数据库 *** 作,对数据库其中的对象和数据运行访问工作的编程语句。
DML 的主要功能是 访问数据 ,因此其语法都是以 读写数据库 为主。
DML 的核心指令是INSERT 、 UPDATE 、 DELETE 、 SELECT 。这四个指令合称 CRUD(Create, Read, Update, Delete),即增删改查。
事务控制语言 (Transaction Control Language, TCL) 用于 管理数据库中的事务 。这些用于管理由 DML 语句所做的更改。它还允许将语句分组为逻辑事务。
TCL 的核心指令是COMMIT 、 ROLLBACK 。
数据控制语言 (Data Control Language, DCL) 是一种可对数据访问权进行控制的指令,它可以控制特定用户账户对数据表、查看表、预存程序、用户自定义函数等数据库对象的控制权。
DCL 的核心指令是GRANT 、 REVOKE 。
DCL 以 控制用户的访问权限 为主,因此其指令作法并不复杂,可利用 DCL 控制的权限有: CONNECT 、 SELECT 、 INSERT 、 UPDATE 、 DELETE 、 EXECUTE 、 USAGE 、 REFERENCES 。
根据不同的 DBMS 以及不同的安全性实体,其支持的权限控制也有所不同。
(以下为 DML 语句用法)
插入完整的行
插入行的一部分
插入查询出来的数据
删除表中的指定数据
清空表中的数据
查询单列
查询多列
查询所有列
查询不同的值
限制查询结果
子查询的子查询
SELECT语句中的WHERE子句
UPDATE语句中的WHERE子句
DELETE语句中的WHERE子句
IN 示例
BETWEEN 示例
AND 示例
OR 示例
NOT 示例
% 示例
_ 示例
组合查询
其中, SOUNDEX() 可以将一个字符串转换为描述其语音表示的字母数字模式。
AVG()会忽略 NULL 行。
使用 DISTINCT 可以让汇总函数值汇总不同的值。
指定多个列的排序方向
分组
分组后排序
使用 WHERE 和 HAVING 过滤数据
(以下为 DDL 语句用法)
普通创建
根据已有的表创建新表
添加列
删除列
修改列
添加主键
删除主键
创建表时使用约束条件:
(以下为 TCL 语句用法)
(以下为 DCL 语句用法)
可以使用触发器来进行审计跟踪,把修改记录到另外一张表中。
MySQL 不允许在触发器中使用 CALL 语句 ,也就是不能调用存储过程。
BEGIN和END
当触发器的触发条件满足时,将会执行BEGIN和END之间的触发器执行动作。
NEW和OLD
CREATE TRIGGER指令用于创建触发器。
语法:
说明:
示例:
之前介绍了一系列的mysql基础知识,今天我们将MySQL常用的功能命令整理出来,供大家参考使用!1.导出整个数据库
mysqldump -u 用户名 -p –default-character-set=latin1 数据库名 >导出的文件名(数据库默认编码是latin1)
mysqldump -u wcnc -p smgp_apps_wcnc >wcnc.sql
2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名>导出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc users>wcnc_users.sql
3.导出一个数据库结构
mysqldump -u wcnc -p -d –add-drop-table smgp_apps_wcnc >d:wcnc_db.sql
-d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table
4.导入数据库
A:常用source 命令
进入mysql数据库控制台,
如mysql -u root -p
mysql>use 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql>source wcnc_db.sql
B:使用mysqldump命令
mysqldump -u username -p dbname <filename.sql
C:使用mysql命令
mysql -u username -p -D dbname <filename.sql
启动与退出
1、进入MySQL:启动MySQL Command Line Client(MySQL的DOS界面),直接输入安装时的密码即可。此时的提示符是:mysql>
2、退出MySQL:quit或exit
库 *** 作
1、创建数据库
命令:create database <数据库名>
例如:建立一个名为sqlroad的数据库
mysql>create database sqlroad
2、显示所有的数据库
命令:show databases (注意:最后有个s)
mysql>show databases
3、删除数据库
命令:drop database <数据库名>
例如:删除名为 sqlroad的数据库
mysql>drop database sqlroad
4、连接数据库
命令:use <数据库名>
例如:如果sqlroad数据库存在,尝试存取它:
mysql>use sqlroad
屏幕提示:Database changed
5、查看当前使用的数据库
mysql>select database()
6、当前数据库包含的表信息:
mysql>show tables(注意:最后有个s)
表 *** 作, *** 作之前应连接某个数据库
1、建表
命令:create table <表名>( <字段名><类型>[,..<字段名n><类型n>])
mysql>create table MyClass(
>id int(4) not null primary key auto_increment,
>name char(20) not null,
>sex int(4) not null default ’′,
>degree double(16,2))
2、获取表结构
命令:desc 表名,或者show columns from 表名
mysql>DESCRIBE MyClass
mysql>desc MyClass
mysql>show columns from MyClass
3、删除表
命令:drop table <表名>
例如:删除表名为 MyClass 的表
mysql>drop table MyClass
4、插入数据
命令:insert into <表名>[( <字段名>[,..<字段名n>])] values ( 值 )[, ( 值n )]
例如,往表 MyClass中插入二条记录, 这二条记录表示:编号为的名为Tom的成绩为.45, 编号为 的名为Joan 的成绩为.99,编号为 的名为Wang 的成绩为.5.
mysql>insert into MyClass values(1,’Tom’,96.45),(2,’Joan’,82.99), (2,’Wang’, 96.59)
5、查询表中的数据
11)、查询所有行
命令:select <字段,字段,...>from <表名 >where <表达式 >
例如:查看表 MyClass 中所有数据
mysql>select * from MyClass
12)、查询前几行数据
例如:查看表 MyClass 中前行数据
mysql>select * from MyClass order by id limit 0,2
或者:
mysql>select * from MyClass limit 0,2
6、删除表中数据
命令:delete from 表名 where 表达式
例如:删除表 MyClass中编号为 的记录
mysql>delete from MyClass where id=1
7、修改表中数据:
update 表名 set 字段=新值,…where 条件
mysql>update MyClass set name=’Mary’where id=1
8、在表中增加字段:
1命令:alter table 表名 add字段 类型 其他
3例如:在表MyClass中添加了一个字段passtest,类型为int(4),默认值为
5mysql>alter table MyClass add passtest int(4) default ’′
9、更改表名:
命令:rename table 原表名 to 新表名
例如:在表MyClass名字更改为YouClass
mysql>rename table MyClass to YouClass
更新字段内容
update 表名 set 字段名 = 新内容
update 表名 set 字段名 = replace(字段名,’旧内容’, 新内容’)
update article set content=concat(‘’,content)
字段类型和数据库 *** 作
1.INT[(M)] 型:正常大小整数类型
2.DOUBLE[(M,D)] [ZEROFILL] 型:正常大小(双精密)浮点数字类型
3.DATE 日期类型:支持的范围是-01-01到-12-31。MySQL以YYYY-MM-DD格式来显示DATE值,但是允许你使用字符串或数字把值赋给DATE列
4.CHAR(M) 型:定长字符串类型,当存储时,总是是用空格填满右边到指定的长度
5.BLOB TEXT类型,最大长度为(2^16-1)个字符。
6.VARCHAR型:变长字符串类型
7.导入数据库表
创建.sql文件
先产生一个库如auction.c:mysqlbin>mysqladmin -u root -p creat auction,会提示输入密码,然后成功创建。
导入auction.sql文件
c:mysqlbin>mysql -u root -p auction <auction.sql。
通过以上 *** 作,就可以创建了一个数据库auction以及其中的一个表auction。
8.修改数据库
在mysql的表中增加字段:
alter table dbname add column userid int(11) not null primary key auto_increment
这样,就在表dbname中添加了一个字段userid,类型为int(11)。
9.mysql数据库的授权
mysql>grant select,insert,delete,create,drop
on *.* (或test.*/user.*/..)
to 用户名@localhost
identified by ‘密码’;
如:新建一个用户帐号以便可以访问数据库,需要进行如下 *** 作:
mysql>grant usage
->ON test.*
->TO testuser@localhost
Query OK, 0 rows affected (0.15 sec)
此后就创建了一个新用户叫:testuser,这个用户只能从localhost连接到数据库并可以连接到test 数据库。下一步,我们必须指定testuser这个用户可以执行哪些 *** 作:
mysql>GRANT select, insert, delete,update
->ON test.*
->TO testuser@localhost
Query OK, 0 rows affected (0.00 sec)
此 *** 作使testuser能够在每一个test数据库中的表执行SELECT,INSERT和DELETE以及UPDATE查询 *** 作。现在我们结束 *** 作并退出MySQL客户程序:
mysql>exit
DDL *** 作
1:使用SHOW语句找出在服务器上当前存在什么数据库:
mysql>SHOW DATABASES
2、创建一个数据库MYSQLDATA
mysql>Create DATABASE MYSQLDATA
3:选择你所创建的数据库
mysql>USE MYSQLDATA(按回车键出现Database changed 时说明 *** 作成功!)
4:查看现在的数据库中存在什么表
mysql>SHOW TABLES
5:创建一个数据库表
mysql>Create TABLE MYTABLE (name VARCHAR(20), sex CHAR(1))
6:显示表的结构:
mysql>DESCRIBE MYTABLE
7:往表中加入记录
mysql>insert into MYTABLE values (“hyq”,”M”)
8:用文本方式将数据装入数据库表中(例如D:/mysql.txt)
mysql>LOAD DATA LOCAL INFILE “D:/mysql.txt”INTO TABLE MYTABLE
9:导入.sql文件命令(例如D:/mysql.sql)
mysql>use database
mysql>source d:/mysql.sql
10:删除表
mysql>drop TABLE MYTABLE
11:清空表
mysql>delete from MYTABLE
12:更新表中数据
mysql>update MYTABLE set sex=”f”where name=’hyq’
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)