<b>MySQL的重要語法</b>[MySQL防范]
本文“<b>MySQL的重要語法</b>[MySQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
1、帐号与权限
设定 root 和其他 user 的密码
mysqladmin -u root password '新密码'
mysqladmin -u root -p
Enter password: 此时再输入密码(倡议采取)
use mysql;
mysql> UPDATE user SET password=password('新密码') where user='root';
只改 root 的密码,假如没有效 where ,则表示改全部 user 的密码
mysql> FLUSH PRIVILEGES; 在 mysql 资料库内,一定要用 flush 更新记忆体上的资料
删除空帐号
mysql> DELETE FROM user WHERE User = '';
mysql> FLUSH PRIVILEGES;
成立新帐号
mysql> GRANT 权限 ON 资料库或资料表 TO 利用者 IDENTIFIED BY '密码';
权限
资料库或资料表
*.* 全部资料库里的全部资料表
* 预设资料库里的全部资料表
资料库.* 某一资料库里的全部资料表
资料库.资料表 某一资料库里的特定资料表
资料表 预设资料库里的某一资料表
设定/改正权限
用 root 登入 MySQL
mysqladmin -u root -p
Enter password:
mysql> GRANT all ON db35.* TO s35@'localhost' IDENTIFIED BY 's35';
把 db35 这个资料库(含其下的全部资料表),受权给 s35,从 localhost 上来,密码为s35
mysql> GRANT all ON *.* 把全部资料库及资料表受权给别人,太危险了!
mysql> GRANT all??? ON www.* TO '*'@'*' IDENTIFIED BY '';
把 www 这个资料库(含其下的全部资料表),受权给 任何机械任何人,无密码(普通给不特定人士利用)
mysql> FLUSH PRIVILEGES; (最後一定要逼迫更新权限)
2、资料库/资料表/栏位的操作
成立资料库 CREATE DATABASE 资料库名;
语法:CREATE DATABASE db_name
利用资料库 USE 资料库名;
语法:USE db_name
删除资料库 DROP DATABASE 资料库名;
语法:DROP DATABASE [IF EXISTS] db_name
成立资料表
CREATE TABLE 资料表名 (栏位1 资料型态, 栏位2 资料型态, ……);
语法:
CREATE TABLE [IF NOT EXISTS] tbl_name (create_definition,…) [table_options] [select_statement]
例:
craete database basic;
use basic;
create table basic(
no char(4)
name char(10)
id char(10));
create_definition:
col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]
[PRIMARY KEY] [reference_definition]
or PRIMARY KEY (index_col_name,…)
or KEY [index_name] KEY(index_col_name,…)
or INDEX [index_name] (index_col_name,…)
or UNIQUE [INDEX] [index_name] (index_col_name,…)
or [CONSTRAINT symbol] FOREIGN KEY index_name (index_col_name,…)
[reference_definition]
or CHECK (expr)
资料构造(type):
资料型态 阐明
TINYINT 有标记的范围是-128到127, 无标记的范围是0到255.
SMALLINT 有标记的范围是-32768到32767, 无标记的范围是0到65535.
MEDIUMINT 有标记的范围是-8388608到8388607, 无标记的范围是0到16777215.
INT 有标记的范围是-2147483648到2147483647, 无标记的范围是0到4294967295.
INTEGER INT的同义词.
BIGINT 有标记的范围是-9223372036854775808到 9223372036854775807,无标记的范围是0到18446744073709551615.
FLOAT 单精密浮点数字.不能无标记.答应的值是-3.402823466E+38到- 1.175494351E-38,0 和1.175494351E-38到3.402823466E+38.
DOUBLE 双精密)浮点数字.不能无标记.答应的值是- 1.7976931348623157E+308到-2.2250738585072014E-308、 0和2.2250738585072014E-308到1.7976931348623157E+308.
DOUBLE PRECISION DOUBLE的同义词.
REAL DOUBLE的同义词.
DECIMAL DECIMAL值的最大范围与DOUBLE相 同.
NUMERIC DECIMAL的同义词.
DATE 日期.援助的范围是'1000-01-01'到'9999-12-31'.
DATETIME 日期和时间组合.援助的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'
TIMESTAMP 时间戳记.范围是'1970-01-01 00:00:00'到2037年的某时.
TIME 一个时间.范围是'-838:59:59'到'838:59:59'.
YEAR 2或4位数字格局的年(内定是4位).答应的值是1901到2155.
CHAR 固定长度,1 ~ 255个字元.
VARCHAR 可变长度,1 ~ 255个字元.
TINYBLOB
TINYTEXT 最大长度为255(2^8-1)个字符.
MEDIUMBLOB
MEDIUMTEXT 最大长度为16777215(2^24-1)个字符.
LONGBLOB
LONGTEXT 最大长度为4294967295(2^32-1)个字符.
ENUM 一个ENUM最多能有65535差别的值.
SET 一个SET最多能有64个成员.
index_col_name:
col_name [(length)]
reference_definition:
REFERENCES tbl_name [(index_col_name,…)]
[MATCH FULL | MATCH PARTIAL]
[ON DELETE reference_option]
[ON UPDATE reference_option]
reference_option:
RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT
table_options:
type = [ISAM | MYISAM | HEAP]
or max_rows = #
or min_rows = #
or avg_row_length = #
or comment = "string"
or auto_increment = #
select_statement:
[ | IGNORE | REPLACE] SELECT … (Some legal select statement)
删除资料表 DROP TABLE 资料表名;
语法:DROP TABLE [IF EXISTS] tbl_name [, tbl_name,…]
改变资料表构造(新增/删除栏位、成立/撤消索引、改变栏位资料型态、栏位重新命 名)
语法:
ALTER [IGNORE] TABLE tbl_name alter_spec [, alter_spec …]
alter_specification:
ADD [COLUMN] create_definition [FIRST | AFTER column_name ]
or ADD INDEX [index_name] (index_col_name,…)
or ADD PRIMARY KEY (index_col_name,…)
or ADD UNIQUE [index_name] (index_col_name,…)
or ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
or CHANGE [COLUMN] old_col_name create_definition
or MODIFY [COLUMN] create_definition
or DROP [COLUMN] col_name
or DROP PRIMARY KEY
or DROP INDEX key_name
or RENAME [AS] new_tbl_name
or table_option
典范:
栏位重新命名
mysql> ALTER TABLE t1 CHANGE a b INTEGER;
将资料表 t1 栏位 a 改名为 b (其资料型态是 integer)
改变栏位资料型态
mysql> ALTER TABLE t1 CHANGE b b BIGINT NOT NULL;
mysql> ALTER TABLE t1 MODIFY b BIGINT NOT NULL;
将资料表 t1 栏位 b 的资料型态改成 bigint not null
mysql> CREATE TABLE t1 (a INTEGER,b CHAR(10));
mysql> ALTER TABLE t1 RENAME t2;
将资料表 t1 改名为 t2
mysql> ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);
将资料表 t2 栏位 a 资料型态由 integer 改成 tinyint not null ,栏位 b 改名为 c 资料型态改成 char(20)
mysql> ALTER TABLE t2 ADD d TIMESTAMP;
在资料表 t2 增添新栏位 d 资料型态是 timestamp
mysql> ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a);
在资料表 t2 ,对 d 栏位做索引,并以栏位 a 作为主索引键
mysql> ALTER TABLE t2 DROP COLUMN c;
删除栏位 c
mysql> ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT, ADD INDEX (c);
新增栏位 c,并做索引(做索引的栏位必须为 not null )
资料表最佳化 OPTIMIZE TABLE 资料表名
语法:OPTIMIZE TABLE tbl_name
栏位长度有变更、删除大量资料,都应举行资料表最佳化
3、记录的操作
插入一笔或多笔记录 INSERT INTO 资料表(栏位1,栏位2,……) VALUES(值1,值2,……), (值1,值2,……), ……
(MySQL 3.22.5 以後可插入多笔记录)
语法:
INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name [(col_name,…)]
VALUES (expression,…),(…),…
or INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name [(col_name,…)]
SELECT …
or INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name
SET col_name=expression, col_name=expression, …
典范:
mysql> INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2);
不可写成
mysql> INSERT INTO tbl_name (col1,col2) VALUES(col2*2,15);
因为:栏位 col1 的值先填入後,才可以计算栏位 col2
从档案读入资料
语法:
LOAD DATA [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE]
INTO TABLE tbl_name
[FIELDS
[TERMINATED BY '\t'] 每一栏位以某字元脱离(内定是 tab)
[OPTIONALLY] ENCLOSED BY "] 每一栏位以某字元括住(内定是不利用括号)
[ESCAPED BY '\\' ]]
[LINES TERMINATED BY ' '] 设定换行的字元(内 定是 )
[IGNORE number LINES] 忽视最前面几行(最前面几笔记录不抄进来)
[(col_name,…)]
典范:
mysql> USE db1;
mysql> LOAD DATA INFILE "./data.txt" INTO TABLE db2.my_table;
从目前 MySQL 目录读入 data.txt
mysql> LOAD DATA INFILE "./88.txt" INTO TABLE TEACHER FIELDS TERMINATED BY ' ' ;
从目前 MySQL 目录(我的在 /var/lib/mysql )读入 data.txt ,每一栏位以 空白 脱离
mysql> LOAD DATA INFILE 'persondata.txt' INTO TABLE persondata (col1,col2,…);
只将 persondata.txt 里某些栏位的资料抓过来
删除记录 DELETE [LOW-PRIORITY] FROM 资料表名 WHERE 条件 [LIMIT rows]
语法:
DELETE [LOW_PRIORITY] FROM tbl_name
[WHERE where_definition] [LIMIT rows]
LOW-PRIORITY 是等到没有效户端利用时再删
LIMIT rows 限制删除记录的笔数
典范:
mysql> DELETE FROM 资料表名;
删除全部记录
mysql> DELETE FROM 资料表名 WHERE 1>0;
删除全部记录,但速度较慢,便利在萤幕上看
更新一笔记录 (语法与 INSERT 相同)
REPLACE INTO 资料表(栏位1,栏位2,……) VALUES(值1,值2,……)
语法:
REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,…)]
VALUES (expression,…)
or REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_
以上是“<b>MySQL的重要語法</b>[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |