- 浏览: 977065 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
Mr.Cheney:
去掉 UUID字符串中的“-” 直接replaceAll(&q ...
JAVA生成全局唯一ID 使用 java.util.UUID -
呜哩喵:
楼主nice
java中的时间操作 -
zxs6587:
Thinking inJava我读着好像说要建立基类对象啊!请 ...
创建子类的对象时也要创建其所有父类的对象? -
just_Word:
getFullYear
date.getyear -
JamesQian:
我觉得楼上的synchronized(this),notify ...
notify() wait()
MySQL使用CREATE TABLE语句创建表,简单语法如下。
CREATE TABLE table_name
(
column_name_1 data_type_1 constraint_1,
column_name_2 data_type_2 constraint_2,
...
column_name_n data_type_n constraint_n
)
其中,column_name为表中的列名,data_type为列的数据类型,constraint为该列的限制说明。CREATE TABLE其完整语法是相当复杂的,因为存在很多的可选子句。
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table_name
(create_definition,...)
[table_options]
[[IGNORE|REPLACE] select_statement]
create_definition=
{
column_declaration
|PRIMARY KEY (index_columns)
|KEY [index_name] (index_columns)
|INDEX [index_name](index_columns)
|UNIQUE [INDEX] [index_name] (index_columns)
|[CONSTRAINT symbol] FOREIGN KEY index_name (index_columns)
|[reference_definition]
|CHECK (expression)
}
column_declaration=
column_name column_data_type
[NOT NULL|NULL] [DEFAULT default_value]
[AUTO_INCREMENT] [PRIMARY KEY] [reference_definition]
reference_definition=
REFERENCES table_name [(index_columns)]
[MATCH FULL|MATCH PARTIAL]
[ON DELETE refenece_option]
[ON UPDATE refenece_option]
refenece_option=
{RESTRICT|CASCADE|SET NULL|NO ACTION|SET DEFAULT}
其中,create_definition可以是列定义(column_declaration)、索引定义、FOREIGN KEY子句、reference_definition或CHECK子句。
1.列定义
列定义(column_declaration)以列名(column_name)和数据类型(column_type)开始,后面可跟几个可选的关键字。其中,列类型可以是第10.4节列出的任意类型,可跟在列类型之后的可选关键字包括以下几种。
NULL或NOT NULL:指出该列是否可以包含NULL值。如果两者都不指出,缺省为NULL。
DEFAULT default_value:给出该列的默认值,不能用于BLOB或TEXT列类型。如果无缺省说明,自动分配一个默认值。对于可取NULL值的列,默认值为NULL。对于不能为NULL的列,默认值如下。
Ø 数值列:对于AUTO_INCREMENT列,其默认值为该列的序列中的下一个数。否则,默认值为0。
Ø 日期和时间列:对于TIMESTAMP类型,默认值为当前日期和时间。否则,默认值为该类型的“零”值(例如,DATE类型的“零”值为“0000-00-00”)。
Ø 字符串类型:对于非ENUM列,默认值为空串。对于ENUM列,默认值为第一个枚举元素。
AUTO_INCREMENT:仅用于整数列类型,使这一列上的数值自动增长。初始值可用AUTO_INCREMENT选项确明指定,缺省为1。AUTO_INCREMENT列还必须指定为UNIQUE索引或PRIMARY KEY,而且应该为NOT NULL。
PRIMARY KEY:指定该列为主键。
UNIQUE:指定该列为UNIQUE索引列。
2.索引定义
PRIMARY KEY、UNIQUE、INDEX和KEY子句定义索引。其中,PRIMARY KEY与UNIQUE指定值必须惟一的索引,即索引列上没有重复的值。INDEX和KEY意义相同,指定可以包含重复值的索引。索引基于index_columns中所指定的列,如果有多个列,用逗号将它们分隔。如果未给出索引名index_name,系统会根据第一个索引列的名称自动选一个。
下面的SQL语句建立一个含有3列的students表,在id列上创建主键索引,并在(name,age)列上创建INDEX索引。
CREATE TABLE students
(
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
age INT NOT NULL,
PRIMARY KEY (id),
INDEX(name,age)
)
13.3.2 创建不存在的表(IF NOT EXISTS)
在创建表时,有时候会因为已经同名冲突而创建失败。这时,需要事先做一个判断,看看是否存在同名的表,使用CREATE TABLE IF NOT EXISTS即可达到这个目的。
在事先不能判断是否存在重名冲突的时候,使用IF NOT EXISTS对于批量SQL程序脚本极为有用。如果使用普通的CREATE TABLE语句,程序第一次运行时,建立这些表,而第二次运行时将出错。如果用IF NOT EXISTS语句,就不会有问题:在第二次运行时,创建表失败,但不出错,程序可以继续向下运行。
下例中,首先检查是否存在表students,如果不存在,则创建之,否则,放弃创建。
CREATE TABLE IF NOT EXISTS students
(
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
age INT NOT NULL,
PRIMARY KEY (id),
INDEX(name,age)
)
13.3.3 创建临时表(TEMPORARY)
有时,需要临时创建一个中间表,完成一些临时存储数据的功能,在完成临时功能之后,再删除这些临时表。MySQL可用CREATE TEMPORARY TABLE来创建临时表,这些表在与服务器的交互结束时会自动删除,而且如果与服务器的交互异常结束,这些表仍会被删除。
举例:下面的SQL语句创建一个临时表temp_student。
CREATE TEMPORARY TABLE temp_student
( id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
age INT NOT NULL,
PRIMARY KEY (id),
INDEX(name,age)
)
13.3.4 利用SELECT的结果创建表
在关系数据库中,任何数据都表示为行和列组成的二维表,而每条SELECT语句的结果也都是一个二维表。考虑到这种性质,有时,可以把查询结果构造为一个表,把查询数据存储起来,例如:
CREATE TABLE new_table_name SELECT * FROM talbe_name [WHERE ...]
举例:下面的SQL语句创建一个表young_students,内容为students中年龄小于20岁的学生。
CREATE TABLE young_students SELECT * FROM students WHERE age <20
另外,可以通过选择表的全部内容(无WHERE子句)来完全拷贝表,也可以利用一个总是失败的WHERE子句(如:“WHERE 1<>1”)来创建一个空表。如果希望利用LOAD DATA语句将数据文件装入一个表中,就需要首先创建一个具有相同结构的空表,如:
CREATE TABLE new_table_name SELECT * FROM talbe_name WHERE 1<>1
13.3.5 修改表(ALTER TABLE)
修改表指修改表的结构,当发现某个表的结构不满足要求时,可以用ALTERTABLE语句来修改表中列的属性,甚至可以修改表的名称。例如,原来的students表中没有“性别”属性,或者是“姓名”属性长度不够等,这些问题都可以通过修改表解决。
ALTER TABLE的语法如下。
ALTER [IGNORE] TABLE table_name action_list
MySQL 扩充了A LTER TABLE 语句,允许指定多个动作,各动作间以逗号分隔,每个action表示对表的一个修改。一方面,这方便多个修改操作;另一方面,这种方式能同时将所有VARCHAR列更改为CHAR列,从而实现将表从行可变长的表更改为行定长的表。
下面的例子给出了某些ALTER TABLE功能。
1.对表重新命名
这很简单,只需给出旧表名和新表名即可。
ALTER TABLE table_name RENAME AS new_table_name
2.更改列类型
为了更改列的类型,可使用CHANGE或MODIFY子句。
举例:假如表students中的列id为SMALLINT UNSIGNED的,希望将其更改为INT UNSIGNED的列。
ALTER TABLE students MODIFY id INT UNSIGNED
ALTER TABLE students CHANGE id id INT UNSIGNED
在CHANGE命令中列名id出现了两次,这是因为:CHANGE除了更改类型外还能更改列名,而MODIFY不能实现这个功能。如果希望在更改类型的同时重新将id 命名为sid,可按如下进行。
ALTER TABLE students CHANGE id sid INT UNSIGNED
注意
使用CHANGE更改了列的定义,并说明了一个包括列名的列的完整定义,即使不更改列名,也需要在定义中包括相应的列名。
3.将字符串列从可变长转换为定长
对字符串列来说,定长的列一般比变长的列处理更快。例如,students中列name的类型为VARCHAR,为了提高查询效率,需要转换为定长的CHAR列,可以修改如下。
ALTER TABLE students MODIFY name CHAR(40)
4.将字符串列从定长转换为可变长
虽然字符串列用定长行查询效率更快,但要占用更多的空间,使用可变长度的字符串列可以节省存储空间。这种转换更为容易:只需将某个CHAR列转换为VARCHAR列,MySQL 就自动地转换其他的CHAR列。
ALTER TABLE students MODIFY name VARCHAR(40)
其他对表结构的修改选项如上面所给出的示例相似,如果想详细了解action_list参数所有的操作,可以参考13.3.1中CREATE TABLE中create_definition参数的说明。
13.3.6 删除表(DROP TABLE)
删除表要比创建和修改表要容易得多,只需指定表名即可。
DROP TABLE table_name
MySQL对DROP TABLE语句在某些有用的方面做了扩充。首先,可在同一语句中指定几个表对它们进行删除,如:
DROP TABLE students,courses,...
其次,不能肯定一个表是否存在,如果存在就删除它,否则也不会出现错误时,可在DROPTABEL语句中增加IF EXISTS。
DROP TABLE IF EXISTS students
同CREATE TABLE一样,IF EXISTS语句在含有DROP TABLE的SQL脚本中很有用,如果不存在待删除的表,脚本会继续向下执行而不会抛出错误。
1:使用SHOW语句找出在服务器上当前存在什么数据库:
mysql> SHOW DATABASES;
2: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';
以下是无意中在网络看到的使用MySql的管理心得,
摘自:http://www1.xjtusky.com/article/htmldata/2004_12/3/57/article_1060_1.html
在windows中MySql以服务形式存在,在使用前应确保此服务已经启动,未启动可用net start mysql命令启动。而Linux中启动时可用“/etc/rc.d/init.d/mysqld start"命令,注意启动者应具有管理员权限。
刚安装好的MySql包含一个含空密码的root帐户和一个匿名帐户,这是很大的安全隐患,对于一些重要的应用我们应将安全性尽可能提高,在这里应把匿名帐户删除、 root帐户设置密码,可用如下命令进行:
use mysql;
delete from User where User="";
update User set Password=PASSWORD('newpassword') where User='root';
如果要对用户所用的登录终端进行限制,可以更新User表中相应用户的Host字段,在进行了以上更改后应重新启动数据库服务,此时登录时可用如下类似命令:
mysql -uroot -p;
mysql -uroot -pnewpassword;
mysql mydb -uroot -p;
mysql mydb -uroot -pnewpassword;
上面命令参数是常用参数的一部分,详细情况可参考文档。此处的mydb是要登录的数据库的名称。
在进行开发和实际应用中,用户不应该只用root用户进行连接数据库,虽然使用root用户进行测试时很方便,但会给系统带来重大安全隐患,也不利于管理技术的提高。我们给一个应用中使用的用户赋予最恰当的数据库权限。如一个只进行数据插入的用户不应赋予其删除数据的权限。MySql的用户管理是通过User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下:
grant all on mydb.* to NewUserName@HostName identified by "password" ;
grant usage on *.* to NewUserName@HostName identified by "password";
grant select,insert,update on mydb.* to NewUserName@HostName identified by "password";
grant update,delete on mydb.TestTable to NewUserName@HostName identified by "password";
若要给此用户赋予他在相应对象上的权限的管理能力,可在GRANT后面添加WITH GRANT OPTION选项。而对于用插入User表添加的用户,Password字段应用PASSWORD 函数进行更新加密,以防不轨之人窃看密码。对于那些已经不用的用户应给予清除,权限过界的用户应及时回收权限,回收权限可以通过更新User表相应字段,也可以使用REVOKE操作。
下面给出本人从其它资料(www.cn-java.com)获得的对常用权限的解释:
全局管理权限:
FILE: 在MySQL服务器上读写文件。
PROCESS: 显示或杀死属于其它用户的服务线程。
RELOAD: 重载访问控制表,刷新日志等。
SHUTDOWN: 关闭MySQL服务。
数据库/数据表/数据列权限:
ALTER: 修改已存在的数据表(例如增加/删除列)和索引。
CREATE: 建立新的数据库或数据表。
DELETE: 删除表的记录。
DROP: 删除数据表或数据库。
INDEX: 建立或删除索引。
INSERT: 增加表的记录。
SELECT: 显示/搜索表的记录。
UPDATE: 修改表中已存在的记录。
特别的权限:
ALL: 允许做任何事(和root一样)。
USAGE: 只允许登录--其它什么也不允许做。
CREATE TABLE table_name
(
column_name_1 data_type_1 constraint_1,
column_name_2 data_type_2 constraint_2,
...
column_name_n data_type_n constraint_n
)
其中,column_name为表中的列名,data_type为列的数据类型,constraint为该列的限制说明。CREATE TABLE其完整语法是相当复杂的,因为存在很多的可选子句。
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table_name
(create_definition,...)
[table_options]
[[IGNORE|REPLACE] select_statement]
create_definition=
{
column_declaration
|PRIMARY KEY (index_columns)
|KEY [index_name] (index_columns)
|INDEX [index_name](index_columns)
|UNIQUE [INDEX] [index_name] (index_columns)
|[CONSTRAINT symbol] FOREIGN KEY index_name (index_columns)
|[reference_definition]
|CHECK (expression)
}
column_declaration=
column_name column_data_type
[NOT NULL|NULL] [DEFAULT default_value]
[AUTO_INCREMENT] [PRIMARY KEY] [reference_definition]
reference_definition=
REFERENCES table_name [(index_columns)]
[MATCH FULL|MATCH PARTIAL]
[ON DELETE refenece_option]
[ON UPDATE refenece_option]
refenece_option=
{RESTRICT|CASCADE|SET NULL|NO ACTION|SET DEFAULT}
其中,create_definition可以是列定义(column_declaration)、索引定义、FOREIGN KEY子句、reference_definition或CHECK子句。
1.列定义
列定义(column_declaration)以列名(column_name)和数据类型(column_type)开始,后面可跟几个可选的关键字。其中,列类型可以是第10.4节列出的任意类型,可跟在列类型之后的可选关键字包括以下几种。
NULL或NOT NULL:指出该列是否可以包含NULL值。如果两者都不指出,缺省为NULL。
DEFAULT default_value:给出该列的默认值,不能用于BLOB或TEXT列类型。如果无缺省说明,自动分配一个默认值。对于可取NULL值的列,默认值为NULL。对于不能为NULL的列,默认值如下。
Ø 数值列:对于AUTO_INCREMENT列,其默认值为该列的序列中的下一个数。否则,默认值为0。
Ø 日期和时间列:对于TIMESTAMP类型,默认值为当前日期和时间。否则,默认值为该类型的“零”值(例如,DATE类型的“零”值为“0000-00-00”)。
Ø 字符串类型:对于非ENUM列,默认值为空串。对于ENUM列,默认值为第一个枚举元素。
AUTO_INCREMENT:仅用于整数列类型,使这一列上的数值自动增长。初始值可用AUTO_INCREMENT选项确明指定,缺省为1。AUTO_INCREMENT列还必须指定为UNIQUE索引或PRIMARY KEY,而且应该为NOT NULL。
PRIMARY KEY:指定该列为主键。
UNIQUE:指定该列为UNIQUE索引列。
2.索引定义
PRIMARY KEY、UNIQUE、INDEX和KEY子句定义索引。其中,PRIMARY KEY与UNIQUE指定值必须惟一的索引,即索引列上没有重复的值。INDEX和KEY意义相同,指定可以包含重复值的索引。索引基于index_columns中所指定的列,如果有多个列,用逗号将它们分隔。如果未给出索引名index_name,系统会根据第一个索引列的名称自动选一个。
下面的SQL语句建立一个含有3列的students表,在id列上创建主键索引,并在(name,age)列上创建INDEX索引。
CREATE TABLE students
(
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
age INT NOT NULL,
PRIMARY KEY (id),
INDEX(name,age)
)
13.3.2 创建不存在的表(IF NOT EXISTS)
在创建表时,有时候会因为已经同名冲突而创建失败。这时,需要事先做一个判断,看看是否存在同名的表,使用CREATE TABLE IF NOT EXISTS即可达到这个目的。
在事先不能判断是否存在重名冲突的时候,使用IF NOT EXISTS对于批量SQL程序脚本极为有用。如果使用普通的CREATE TABLE语句,程序第一次运行时,建立这些表,而第二次运行时将出错。如果用IF NOT EXISTS语句,就不会有问题:在第二次运行时,创建表失败,但不出错,程序可以继续向下运行。
下例中,首先检查是否存在表students,如果不存在,则创建之,否则,放弃创建。
CREATE TABLE IF NOT EXISTS students
(
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
age INT NOT NULL,
PRIMARY KEY (id),
INDEX(name,age)
)
13.3.3 创建临时表(TEMPORARY)
有时,需要临时创建一个中间表,完成一些临时存储数据的功能,在完成临时功能之后,再删除这些临时表。MySQL可用CREATE TEMPORARY TABLE来创建临时表,这些表在与服务器的交互结束时会自动删除,而且如果与服务器的交互异常结束,这些表仍会被删除。
举例:下面的SQL语句创建一个临时表temp_student。
CREATE TEMPORARY TABLE temp_student
( id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
age INT NOT NULL,
PRIMARY KEY (id),
INDEX(name,age)
)
13.3.4 利用SELECT的结果创建表
在关系数据库中,任何数据都表示为行和列组成的二维表,而每条SELECT语句的结果也都是一个二维表。考虑到这种性质,有时,可以把查询结果构造为一个表,把查询数据存储起来,例如:
CREATE TABLE new_table_name SELECT * FROM talbe_name [WHERE ...]
举例:下面的SQL语句创建一个表young_students,内容为students中年龄小于20岁的学生。
CREATE TABLE young_students SELECT * FROM students WHERE age <20
另外,可以通过选择表的全部内容(无WHERE子句)来完全拷贝表,也可以利用一个总是失败的WHERE子句(如:“WHERE 1<>1”)来创建一个空表。如果希望利用LOAD DATA语句将数据文件装入一个表中,就需要首先创建一个具有相同结构的空表,如:
CREATE TABLE new_table_name SELECT * FROM talbe_name WHERE 1<>1
13.3.5 修改表(ALTER TABLE)
修改表指修改表的结构,当发现某个表的结构不满足要求时,可以用ALTERTABLE语句来修改表中列的属性,甚至可以修改表的名称。例如,原来的students表中没有“性别”属性,或者是“姓名”属性长度不够等,这些问题都可以通过修改表解决。
ALTER TABLE的语法如下。
ALTER [IGNORE] TABLE table_name action_list
MySQL 扩充了A LTER TABLE 语句,允许指定多个动作,各动作间以逗号分隔,每个action表示对表的一个修改。一方面,这方便多个修改操作;另一方面,这种方式能同时将所有VARCHAR列更改为CHAR列,从而实现将表从行可变长的表更改为行定长的表。
下面的例子给出了某些ALTER TABLE功能。
1.对表重新命名
这很简单,只需给出旧表名和新表名即可。
ALTER TABLE table_name RENAME AS new_table_name
2.更改列类型
为了更改列的类型,可使用CHANGE或MODIFY子句。
举例:假如表students中的列id为SMALLINT UNSIGNED的,希望将其更改为INT UNSIGNED的列。
ALTER TABLE students MODIFY id INT UNSIGNED
ALTER TABLE students CHANGE id id INT UNSIGNED
在CHANGE命令中列名id出现了两次,这是因为:CHANGE除了更改类型外还能更改列名,而MODIFY不能实现这个功能。如果希望在更改类型的同时重新将id 命名为sid,可按如下进行。
ALTER TABLE students CHANGE id sid INT UNSIGNED
注意
使用CHANGE更改了列的定义,并说明了一个包括列名的列的完整定义,即使不更改列名,也需要在定义中包括相应的列名。
3.将字符串列从可变长转换为定长
对字符串列来说,定长的列一般比变长的列处理更快。例如,students中列name的类型为VARCHAR,为了提高查询效率,需要转换为定长的CHAR列,可以修改如下。
ALTER TABLE students MODIFY name CHAR(40)
4.将字符串列从定长转换为可变长
虽然字符串列用定长行查询效率更快,但要占用更多的空间,使用可变长度的字符串列可以节省存储空间。这种转换更为容易:只需将某个CHAR列转换为VARCHAR列,MySQL 就自动地转换其他的CHAR列。
ALTER TABLE students MODIFY name VARCHAR(40)
其他对表结构的修改选项如上面所给出的示例相似,如果想详细了解action_list参数所有的操作,可以参考13.3.1中CREATE TABLE中create_definition参数的说明。
13.3.6 删除表(DROP TABLE)
删除表要比创建和修改表要容易得多,只需指定表名即可。
DROP TABLE table_name
MySQL对DROP TABLE语句在某些有用的方面做了扩充。首先,可在同一语句中指定几个表对它们进行删除,如:
DROP TABLE students,courses,...
其次,不能肯定一个表是否存在,如果存在就删除它,否则也不会出现错误时,可在DROPTABEL语句中增加IF EXISTS。
DROP TABLE IF EXISTS students
同CREATE TABLE一样,IF EXISTS语句在含有DROP TABLE的SQL脚本中很有用,如果不存在待删除的表,脚本会继续向下执行而不会抛出错误。
1:使用SHOW语句找出在服务器上当前存在什么数据库:
mysql> SHOW DATABASES;
2: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';
以下是无意中在网络看到的使用MySql的管理心得,
摘自:http://www1.xjtusky.com/article/htmldata/2004_12/3/57/article_1060_1.html
在windows中MySql以服务形式存在,在使用前应确保此服务已经启动,未启动可用net start mysql命令启动。而Linux中启动时可用“/etc/rc.d/init.d/mysqld start"命令,注意启动者应具有管理员权限。
刚安装好的MySql包含一个含空密码的root帐户和一个匿名帐户,这是很大的安全隐患,对于一些重要的应用我们应将安全性尽可能提高,在这里应把匿名帐户删除、 root帐户设置密码,可用如下命令进行:
use mysql;
delete from User where User="";
update User set Password=PASSWORD('newpassword') where User='root';
如果要对用户所用的登录终端进行限制,可以更新User表中相应用户的Host字段,在进行了以上更改后应重新启动数据库服务,此时登录时可用如下类似命令:
mysql -uroot -p;
mysql -uroot -pnewpassword;
mysql mydb -uroot -p;
mysql mydb -uroot -pnewpassword;
上面命令参数是常用参数的一部分,详细情况可参考文档。此处的mydb是要登录的数据库的名称。
在进行开发和实际应用中,用户不应该只用root用户进行连接数据库,虽然使用root用户进行测试时很方便,但会给系统带来重大安全隐患,也不利于管理技术的提高。我们给一个应用中使用的用户赋予最恰当的数据库权限。如一个只进行数据插入的用户不应赋予其删除数据的权限。MySql的用户管理是通过User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下:
grant all on mydb.* to NewUserName@HostName identified by "password" ;
grant usage on *.* to NewUserName@HostName identified by "password";
grant select,insert,update on mydb.* to NewUserName@HostName identified by "password";
grant update,delete on mydb.TestTable to NewUserName@HostName identified by "password";
若要给此用户赋予他在相应对象上的权限的管理能力,可在GRANT后面添加WITH GRANT OPTION选项。而对于用插入User表添加的用户,Password字段应用PASSWORD 函数进行更新加密,以防不轨之人窃看密码。对于那些已经不用的用户应给予清除,权限过界的用户应及时回收权限,回收权限可以通过更新User表相应字段,也可以使用REVOKE操作。
下面给出本人从其它资料(www.cn-java.com)获得的对常用权限的解释:
全局管理权限:
FILE: 在MySQL服务器上读写文件。
PROCESS: 显示或杀死属于其它用户的服务线程。
RELOAD: 重载访问控制表,刷新日志等。
SHUTDOWN: 关闭MySQL服务。
数据库/数据表/数据列权限:
ALTER: 修改已存在的数据表(例如增加/删除列)和索引。
CREATE: 建立新的数据库或数据表。
DELETE: 删除表的记录。
DROP: 删除数据表或数据库。
INDEX: 建立或删除索引。
INSERT: 增加表的记录。
SELECT: 显示/搜索表的记录。
UPDATE: 修改表中已存在的记录。
特别的权限:
ALL: 允许做任何事(和root一样)。
USAGE: 只允许登录--其它什么也不允许做。
发表评论
-
表连接详解
2010-12-02 14:56 1188转载(http://www.cnblogs.com/mac_a ... -
having子句的用法
2010-12-02 14:28 1665转载(http://dev.csdn.net/htmls/81 ... -
视图与表的区别与联系
2010-10-30 20:30 2676区别: 1、视图是已经编译好的sql语句,是基于 SQL 语句 ... -
sql语句中出现关键字
2010-01-04 14:54 1733在sql server中关键字用 中括号 "[]&q ... -
查询数据库中不同字段的命令
2009-12-31 20:37 1211select count(distinct item) fro ... -
source 命令使用时出现的问题
2009-12-09 13:19 1068使用source命令时经常出错 出错原因 1 没有指定当前使用 ... -
MySQL 消除出错时的声音
2009-12-09 13:11 972MySQL -u root -b -p -
mysql导入导出命令
2009-10-14 13:51 2338mysqldump命令的输入是在bin目录下. 1.导出整个数 ... -
关于MySQL的AUTO_INCREMENT(自动递增)的设置
2009-10-13 23:27 3774CREATE TABLE test ( id INT UNSI ... -
jdbc概述和常用接口和类
2009-09-25 20:15 84391 JDBC概述 JDBC(Java DataB ... -
mysql中文乱码的问题
2009-09-24 21:19 1106在使用数据库的时候遇到了中文乱码的问题 在网上搜索之后发现方法 ... -
mysql重启
2009-09-24 17:06 2108参考自:http://www.yaiba.net/blog/r ... -
MySQL数据库中的Show命令具体用法
2009-09-19 19:44 1501SQL中有很多的基本命令,show命令也是其中之一,在很多使用 ... -
在MySQL数据库中应当如何关闭错误提示音
2009-09-13 14:53 1177使用MySQL的命令终端时,如果输入SQL有误,将有beep ... -
java连接mysql实例
2009-09-13 14:42 8028/** * @(#)JDBCTest.java * * ... -
第一,第二,第三范式
2009-09-13 11:44 4701在创建一个数据库 ... -
查询记录条数
2009-09-01 13:56 1024select count(*) from dt ... -
MySQL模糊查询
2009-09-01 13:41 4067SELECT * FROM oneself WHERE nam ... -
mysql 导入sql文件
2009-09-01 13:34 1403C:\mysql\bin>mysql -u 用户名 ... -
mysql数据库支持中文
2009-04-21 21:46 1173打开终端:application - appendix - t ...
相关推荐
以上就是从“MYSQL常用命令教程”中提炼出来的关键知识点,涵盖了MySQL服务控制、连接管理、用户管理、数据库操作、数据表操作、数据操作以及数据导入导出等方面的核心命令。熟练掌握这些命令,对于日常开发工作及...
根据提供的标题、描述以及部分内容,本文将详细解析MySQL数据库中的常用命令,并且涵盖数据库的创建、管理、查询、更新等核心操作。 ### MySQL 常用命令概览 #### 启动与停止 MySQL 服务 - **启动 MySQL 服务**: ...
### MySQL常用命令详解 #### 一、连接与断开MySQL **命令格式:** ``` mysql -h [主机地址] -u [用户名] -p [密码] ``` **示例:** 1. **本地连接MySQL服务:** ```bash mysql -uroot -p ``` 输入此命令后,...
Mysql常用操作语句 Mysql是当前最流行的开源关系型数据库管理系统之一,对于 PHP+Mysql 技术的新手来说,掌握Mysql的基本操作语句是必不可少的。本文将详细介绍Mysql的基本操作语句,包括登录、数据库操作、表操作...
以上仅是MySQL常用命令的一部分,实际操作中还有更多高级功能,如视图、存储过程、触发器、索引、事务处理等。通过深入学习和实践,你可以更高效地管理和维护MySQL数据库。在“MySQL常用命令汇总.pdf”文件中,应有...
mysql常用操作命令 mysql是一个流行的关系数据库管理系统,作为开发人员,掌握mysql的常用操作命令是非常必要的。本文将对mysql的常用操作命令进行总结,包括连接mysql、查询版本信息、查询当前日期、查询服务器中...
MySQL 常用命令 MySQL 是一个流行的开源关系数据库管理系统,它提供了许多实用的命令来管理和维护数据库。在本资源中,我们将总结一些常用的 MySQL 命令,涵盖数据库创建、用户管理、数据备份和恢复、查询执行等...
MySQL常用操作命令 MySQL是一种关系数据库管理系统,常用于各种应用程序的数据存储和管理。本文将介绍MySQL常用的操作命令,包括启动MySQL服务器、进入交互操作界面、退出交互操作界面、执行基本的SELECT命令、使用...
MySQL常用命令集锦--初级DBA MySQL是当前最流行的开源关系数据库管理系统,本文将总结一些常用的MySQL命令,适合初级DBA学习和工作。 一、MySQL服务的启动和停止 MySQL服务的启动和停止命令如下: * ...
### MySQL常用命令总结 本文将基于提供的部分内容对MySQL的基本操作命令进行详细解析,这些命令涵盖了数据库及表的基本管理,如创建、查询、更新等。掌握这些命令有助于更好地管理和操作MySQL数据库。 #### 一、...
### MySQL常用操作命令详解 #### 一、启动与退出 **1. 进入MySQL:** 对于新手而言,了解如何进入MySQL至关重要。通过SSH连接到服务器后,可以通过以下命令来连接MySQL服务: ```sql mysql -u 用户名 -p ```...
MySQL常用命令总结 MySQL常用命令总结
### MySQL常用命令详解 #### 启动MySQL服务器 在启动MySQL服务器方面,有两种常见的方法: 1. **使用winmysqladmin工具**:这是一个图形化的工具,适用于Windows系统。如果你的计算机在启动时已经设置了自动运行...
### MySQL 常用操作基本知识点详解 #### 一、导出数据库 1. **完整导出** - **命令格式**: ``` mysqldump -u 用户名 -p --default-character-set=字符集 数据库名 > 文件名 ``` - **示例**: ``` mysqldump...
以下是一些关于MySQL常用命令的详细说明: 1. **创建和管理数据库**: - `create database name;` 用于创建一个新的数据库,name是数据库的名称。 - `use databasename;` 用于切换到指定的数据库。 - `drop ...
### Linux下MySQL常用操作命令总结 #### 一、MySQL登录与退出 在Linux环境下操作MySQL时,首先需要确保MySQL服务已经正确安装并且运行。登录MySQL可以通过以下方式: 1. **定位MySQL目录**:通常MySQL的数据文件...
MySQL是世界上最受欢迎的关系型...通过学习这些MySQL常用命令,你可以对数据库进行基本的创建、查询、修改和删除操作,同时了解如何更高效地管理和维护数据库。在实际工作中,熟练掌握这些命令能够极大地提升工作效率。