Chinaunix首页 | 论坛 | 博客
  • 博客访问: 570655
  • 博文数量: 111
  • 博客积分: 3478
  • 博客等级: 中校
  • 技术积分: 1327
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-28 22:37
文章分类

全部博文(111)

文章存档

2013年(4)

2012年(57)

2011年(15)

2010年(7)

2009年(28)

分类: 数据库开发技术

2009-11-15 15:54:49

MySQL学习笔记:

mysql 版本5.0

Mysql 中每个命令都是以“;”结尾的

查看时间:select now();

查看状态:show status

查询表的结构:desc/describe tablename

查看当前有谁在用哪个数据库,并且在做什么: show  processlist也可以加上\G参数;

怎么创建一个数据库那 create database  databasename

创建一个表:create table tablename 1”“栏1资料种类,”“栏2”“栏2资料种类“,“栏3”“栏3资料种类,“栏N”“栏N资料种类 属性)

注意在使用charvarchar 时要注意一点这两个列类型要和后边的数字中间用空格隔开并且数字要用()括起来并且用nullnot nullnotnull之间要有空格

我们可以对资源种类的属性进行设置一般设置都是直接在资料种类后边直接设置这些属性通常可以是(nullnot nulluniquecheck等)

Unique主要是保证一个栏位中的值都不一样

Check主要是保证一个栏位中的值必须符合条件使用时后边要跟着条件例如:(sid integer check (sid>0)

资源种类中如果有字数限制是我们可以用char (字数限制 ) varchar (字数限制值)例如:first_name char(20)  not null

我们可以用“;”来隔开连个mysql命令

向表中添加内容我们用insert into tablename ( “列1“,列2”“列3……)  values(‘第一列的列值‘,‘第二列的列值’,第三列的列值’)

注意:如果某一列的值为数字则此列可以不用单引号引起来如果是最后一列的话就不要用“,”隔开了值也是如此;我们也可以同时输入多行各行之间用”,“来隔开;

例如:

insert into hhfbak ( first_name,last_name,birthday,homeaddr ) values('hua

ng','haifeng',1214,'henan' ),('li','ping',1010,'shenyang');

Query OK, 2 rows affected (0.00 sec)

Records: 2  Duplicates: 0  Warnings: 0

Mysql用户管理:

增加mysql用户有三种用法:

第一用grant语句:

Grant  select on databasename.* to ‘username’@’%’ indentified by ‘mima’ with grant option;

注意一点:在这个语句中的任何符号都不能省;“%”代表的事任何主机密码要用“”引起来

第二用insert语句:

Insert into user HostUsernamePasswordvalues(‘hostname,’username’,’’;

Flush privileges (这个是允许从某台主机的名叫主机的某个用户连接某个数据库,这个应该是在使用某个数据库的条件的前提下的)

第三种方法:

 Create user username identified by password ‘usernamepassword’

Mysql数据库密码的设置修改:

Mysqladmin  -u username   –password “密码”

创建一个从任何主机登陆服务器的超级用户:

Grant all privileges on *.*  to username@localhost  identified by ‘something’ with grant option;

Grant all privileges on *.* to username@% identified by ‘something’ with grant option

修改密码:

Mysqladmin –u username –p”oldpassword” password  “newpassword”

修改root用户密码的方法:

Shell> mysql –u root

Mysql> set password root=”mima”;

连接mysql数据库语法是:

Mysql  -h hostname  -u username –p password

在一个存在的表中加入列:alter table tablename add column ‘列名‘ 数据类型

使用某个数据库中的某个表可以使用db_name.tbl_name

xp下启动和关闭数据库服务:

Net start mysql

Net stop mysql

数据库管理之语法部分:

首先是select的用法:

从某个表中查看某些内容:

Select sth from table_name;(注意这里的sth指的是栏位名)可以查看多个列值各个列值要用“,”分开

查看某个栏位的不同的值这里主要是使用distinct

Select distinct “栏位名“ from table_name;

查看某个表中某个栏内的某个栏值有几下这种方法:

where来限定选择行的条件,字符串的比较是不分大小写的

Select sth from table_name where “条件

列子如下:

mysql> select * from hhfbak;

+------------+-----------+----------+----------+

| first_name | last_name | birthday | homeaddr |

+------------+-----------+----------+----------+

| bill       | haifeng   | 1214     | henan    |

| shen       | yong      | 1218     | shanghai |

| huang      | haifeng   | 1214     | henan    |

| huang      | haifeng   | 1214     | henan    |

| li         | ping      | 1010     | shenyang |

+------------+-----------+----------+----------+

5 rows in set (0.00 sec)

mysql> select username from customerbak where 'birthday'='1938-12-14';

Empty set (0.00 sec)

mysql> select username from customerbak where birthday="1938-12-14";

+----------+

| username |

+----------+

| hhf      |

+----------+

1 row in set (0.01 sec)

注意:注意这两个搜寻方法的异同及搜索的结果这个条件是有要求的当列值是数字这里是单纯的数字时就可以不用双引号引得而其他的则必须否则不会有任何显示列名是不用引号引得;

Question:

mysql> select version();

+-----------+

| version() |

+-----------+

| 5.0.45    |

+-----------+

1 row in set (0.01 sec)

ERROR 1054 (42S22): Unknown column 'bill' in 'field list'

mysql> set password for root="123456";

ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number

Password hash should be a 41-digit hexadecimal number

Sql questions

mysql> use mysql;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

 

Database changed

mysql> show tables;

+---------------------------+

| Tables_in_mysql           |

+---------------------------+

| columns_priv              |

| db                        |

| func                      |

| help_category             |

| help_keyword              |

| help_relation             |

| help_topic                |

| host                      |

| proc                      |

| procs_priv                |

| tables_priv               |

| time_zone                 |

| time_zone_leap_second     |

| time_zone_name            |

| time_zone_transition      |

| time_zone_transition_type |

| user                      |

+---------------------------+

17 rows in set (0.00 sec)

mysql> use hhf;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

 

Database changed

mysql> show tables;

+---------------+

| Tables_in_hhf |

+---------------+

| customer      |

| customerbak   |

| hhf           |

| hhfbak        |

| ladies        |

| user_list     |

+---------------+

6 rows in set (0.00 sec)

mysql> grant all on *.* to root@"%" identified by "123456";

Query OK, 0 rows affected (0.01 sec)

 

mysql> quit;

Bye

[root@www ~]# mysql -u root -p

Enter password:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

mysql> grant all on *.* to root@"localhost" identified by "123456";

Query OK, 0 rows affected (0.00 sec)

这里的*.*第一个*代表着数据库第二个*代表表如果是准备表示某个数据库上的所有表我们可以用databasename.* 某个数据库上的某个表我们可以用databasename.tablename

[root@www ~]# mysql -h localhost -u root -p

Enter password:       

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 9

Server version: 5.0.45 Source distribution

 

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

 

mysql> quit;

Bye

补充知识:

数据库列的类型:

数值列类型:

Int   标准整数                                      bigint    大整数

Tinyint 非常小的整数                                 float    单精度浮点数

Smallint    小的整数                                 double   双精度浮点数

Mediumint  中等较大整数                             decimal  一个串的浮整数

串列类型:

Char 固定长度字符串

Varchar 可变长度字符串

Tinyblog 非常小的blog

Blog    小的blog

Mediumblog  中等较大的blog

Longblog     blog

Tinytext  非常小的文本串

Text     小文本串

Mediumtext  中等文本串

Longtext   大文本串

Enum   枚举;列可赋予某个枚举成员                 

Set      集合;列可赋予某个集合成员

日期和时间列类型:

Date     yyyy-mm-dd的格式表示日期

Time    hh:mm:ss的格式表示时间

Datetime yyyy-mm-dd hh:mm:ss的格式表示时间

Timestamp  yyyymmddhhmmss来表示时间

Year yyyy的格式表示时间值

注意在使用charvarchar 时要注意一点这两个列类型要和后边的数字中间用空格隔开并且数字要用()括起来

算术运算符:

+      *   

-       /   

比较运算符:

>  大于       =     等号

<  小于       != <>    不等于

>= 大于等于

<= 小于等于

逻辑运算符:

And 逻辑和/

Or  逻辑或

Not 逻辑非

Andor的用法:

mysql> select first_name from hhfbak WHERE last_name="haifeng"  and  last_name="ping";

Empty set (0.00 sec)

 

mysql> select first_name from hhfbak WHERE last_name="haifeng" or last_name="ping";

注意andor前后都是有空格的并且每个条件都是由列名=“列值”

Mysql复杂条件设置:

 

 

 

 

 

 

Mysql 基础知识:

mysql 中存在五张表:db,host,,user,columns_priv_tables_priv

Grant revoke用法详解:

Grant 主要是在用户管理时既可以创建用户又可以赋权限用法:

mysql> Grant privileges (columns) on what to user identified by “password” with grant option;

在这里注意:这里的user代表着username@hostname 这里主机名是用户可以从哪里连接服务器,如果是任何地方的话我们我们可用”%”代表是任何主机意为可以从任何地方连接数据库服务器在这里注意一点我们要用“”“将主机名其引起来在主机名这边在说一点:

(这里是指定的用户可以在neteasn.net这个域的任何主机上登录)

username@192.168.1.% (这里的意思是指定的用户只能在192.168.1.点段的主机上登录)

(这里是192.168.1点段的掩码是255.255.255.0ip192.168.1.8这台主机上登录)如果是针对某个数据库中的某个表中的某个列时那么()里面必须存在列名如果有多个列时我们必须用“,”将各个列分开

with grant option 允许用户受权限给其他人若没有这个选项则没有为用户授权限的权限

收回用户权限:

收回 用户权限我们可以使用revokerevoke的语法是:

mysql> Revoke privileges columnson sth from sw;

这个“STh“可以是数据库也可以是

删除用户我们用delete语句将其删除语法是:

mysql> delete from user where user = username and host = hostname”;

mysql> flush privileges;

Privileges 详细:

Alter 更改表和索引               drop 删除表和数据库

Create 创建表和数据库            index 创建和删除索引

Delete 删除表中的所有记录        insert 向表中插入新的记录

Reference 未用                   select 检索表中的已有记录

Update   修改表中的记录         file 读写服务器中的文件

Process 查看有关进程在服务器中的执行和取消信息

Reload 重新加载授权表或刷新日志主机高速缓存或表高速缓存

Shutdown 关闭服务器   all 任何权限

Usage 无权限的权限

Mysql 数据库权限知识:

mysql 数据库权限方面全局权限最大适用于所有的数据库和表

然后是数据库级的权限她是针对某个数据库

表级的权限是适用于某个表的

 

阅读(3697) | 评论(0) | 转发(0) |
0

上一篇:oracle 知识集锦

下一篇:iptables 学习总结

给主人留下些什么吧!~~