mysql重要语法 一

发布 2021-05-11 17:20:28 阅读 4355

一、帐号与权限。

设定 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; (最後一定要强迫更新权限)

二、资料库/资料表/栏位的操作。

建立资料库 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'到2024年的某时。

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 **g_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

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

栏位长度有变动、删除大量资料,都应进行资料表最佳化。

三、纪录的操作。

插入一笔或多笔纪录 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_' 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 ".into table

从目前 mysql 目录读入

mysql> load data infile ".into table teacher fields terminated by '

从目前 mysql 目录(我的在 /var/lib/mysql )读入 ,每一栏位以空白分开。

mysql> load data infile ''into table persondata (col1,col2,…)

只将 里某些栏位的资料抓过来。

删除纪录 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_

英语重要语法

引导语 看进去的东西,不是口才 讲出来的,才是口才 吸收进去的,不是口才,表达出来的才是口才。我们知道,口才是一项能力,而能力一定是通过训练修炼而成的。这就要求我们经常开口,所谓 拳不离手,曲不离口,学习口才也要不断地开口开口再口!1 朗读朗诵。自己读书,大声地读出来。每天坚持朗读一些文章,既练习口...

韩语重要语法

韩国语在世界各国语言中,属于粘着语,主要依靠词尾的变化来表现其语法关系,是表现力很丰富的一种语言。从学习韩国语的实际需要出发,我们主要从三大部分叙述现代韩国语语法,即词类概论,词法,句法。词类 词按其意义,形态及其在句子中的功能分为若干类,叫做词类。韩语的词通常分为八大类。即 名词,数词,代词 合起...

语法的重要

分析 录音说马戏团表演的地方叫marquee,当然没人知道marquee是什么东西,所以要往后听,听到canvas portable building,帆布可移动建筑,也就是帐篷,如果听不懂可以再往后听,green space or car park rather than theatre or s...