MYsql 语句

来源:互联网 发布:vb程序设计免费版下载 编辑:程序博客网 时间:2024/04/28 12:06













 3 / 29
 
  GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY 'something' WITH GRANT OPTION;
  GRANT ALL PRIVILEGES ON *.* TO mailto:monty@"" IDENTIFIED BY 'something' WITH GRANT OPTION;   删除授权:
  mysql> revoke all privileges on *.* from mailto:root@"";   mysql> delete from user where user="root" and host="%";   mysql> flush privileges;
  创建一个用户custom在特定客户端it363.com登录,可访问特定数据库fangchandb
  mysql >grant select, insert, update, delete, create,drop on fangchandb.* to custom@ it363.com identified by ' passwd'   重命名表:
  mysql > alter table t1 rename t2;   mysqldump   备份数据库
  shell> mysqldump -h host -u root -p dbname >dbname_backup.sql   恢复数据库
  shell> mysqladmin -h myhost -u root -p create dbname
  shell> mysqldump -h host -u root -p dbname < dbname_backup.sql   如果只想卸出建表指令,则命令如下:
  shell> mysqladmin -u root -p -d databasename > a.sql
  如果只想卸出插入数据的sql命令,而不需要建表命令,则命令如下:   shell> mysqladmin -u root -p -t databasename > a.sql
  那么如果我只想要数据,而不想要什么sql命令时,应该如何操作呢?   mysqldump -T./ phptest driver
  其中,只有指定了-T参数才可以卸出纯文本文件,表示卸出数据的目录,./表示当前目录,即与mysqldump同一目录。如果不指定driver表,则将卸出整个数据库的数据。每个表会生成两个文件,一个为.sql文件,包含建表执行。另一个为.txt文件,只包含数据,且没有sql指令。
  可将查询存储在一个文件中并告诉mysql从文件中读取查询而不是等待键盘输入。可利用外壳程序键入重定向实用程序来完成这项工作。例如,如果在文件my_file.sql 中存放有查   询,可如下执行这些查询:
  例如,如果您想将建表语句提前写在sql.txt中,   mysql > mysql -h myhost -u root -p   Mysql5.0支持的字符集
  MySQL中的字符集控制做得比较细,可以分为数据库级,表级, 字段级(这一点和ORACLE不同)。我上次改的字符集是数据库级的,对表sysuser没有影响,所以出现了改了字符集却一样无法插入中文的情况。





 4 / 29
 
  Drop TABLE IF EXISTS `firstdb`.`users`;   Create TABLE `firstdb`.`users` (   `id` int(11) NOT NULL auto_increment,   `username` varchar(40) default NULL,   `birthday` date default NULL,   PRIMARY KEY (`id`)
  ) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
  编译 MySQL 时,指定了一个默认的字符集,这个字符集是 latin1;
  安装 MySQL 时,可以在配置文件 (my.ini) 中指定一个默认的的字符集,如果没指定,这个值继承自编译时指定的;
  启动 mysqld 时,可以在命令行参数中指定一个默认的的字符集,如果没指定,这个值继承自配置文件中的;
  此时 character_set_server 被设定为这个默认的字符集;
  当创建一个新的数据库时,除非明确指定,这个数据库的字符集被缺省设定为    character_set_server;
  当选定了一个数据库时,character_set_database 被设定为这个数据库默认的字符集;
  在这个数据库里创建一张表时,表默认的字符集被设定为 character_set_database,也就是这个数据库默认的字符集;
  当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集;
  这个字符集就是数据库中实际存储数据采用的字符集,mysqldump 出来的内容就是这个字符集下的;Query Browser1.1 对中文输入的支持太差劲了,可以用notebook写好后,再copy过去执行
update firstdb.users set username='以' where id=3;   
  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.导入数据库





 5 / 29
 
  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 <数据库名>   例如:建立一个名为xhkdb的数据库   mysql> create database xhkdb;   2、显示所有的数据库
  命令:show databases (注意:最后有个s)   mysql> show databases;   3、删除数据库
  命令:drop database <数据库名>   例如:删除名为 xhkdb的数据库   mysql> drop database xhkdb;   4、连接数据库   命令: use <数据库名>
  例如:如果xhkdb数据库存在,尝试存取它:   mysql> use xhkdb;
  屏幕提示:Database changed   5、查看当前使用的数据库   mysql> select database();   6、当前数据库包含的表信息:











 8 / 29
 
  (1)在mysql的表中增加字段:
  alter table dbname add column userid int(11) not null primary key   auto_increment;
  这样,就在表dbname中添加了一个字段userid,类型为int(11)。   7.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   Bye9!
  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;





 9 / 29
 
  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的管理心得, 
  在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用户进行测试时很方便,但会给系统带来重大安全隐患,也不利于管理技术的   提高。我们给一个应用中使用的用户赋予最恰当的数据库权限。如一个只进行数据





 10 / 29
 
  插入的用户不应赋予其删除数据的权限。MySql的用户管理是通过 User表来实现的   ,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应   的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下   :
  grant all on mydb.* to NewUserName@HostName identified by "password"    grant usage on *.* toNewUserName@HostName identified by "password";   grant select,insert,update on mydb.* toNewUserName@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操作。 
下面给出本人获得的对常用权限的解释: 
  全局管理权限:
  FILE: 在MySQL服务器上读写文件。
  PROCESS: 显示或杀死属于其它用户的服务线程。   RELOAD: 重载访问控制表,刷新日志等。   SHUTDOWN: 关闭MySQL服务。   数据库/数据表/数据列权限:
  Alter: 修改已存在的数据表(例如增加/删除列)和索引。   Create: 建立新的数据库或数据表。   Delete: 删除表的记录。   Drop: 删除数据表或数据库。   INDEX: 建立或删除索引。   Insert: 增加表的记录。   Select: 显示/搜索表的记录。   Update: 修改表中已存在的记录。   特别的权限:
  ALL: 允许做任何事(和root一样)。
  USAGE: 只允许登录--其它什么也不允许做。
--------------------- 


































 18 / 29
 
  LEFT JOIN table2 ON table1.a=table2.c   1 连接查询中使用Iif函数实现以0值显示空值   Iif表达式: Iif(IsNull(Amount,0,Amout)
  例:无论定货大于或小于¥50,都要返回一个标志。   Iif([Amount]>50,?Big order?,?Small order?)   五. 分组和总结查询结果
  在SQL的语法里,GROUP BY和HAVING子句用来对数据进行汇总。GROUP BY子句指明   了按照哪几个字段来分组,而将记录分组后,用HAVING子句过滤这些记录。   GROUP BY 子句的语法   Select fidldlist   FROM table   Where criteria
  [GROUP BY groupfieldlist [HAVING groupcriteria]]
  注:Microsoft Jet数据库 Jet 不能对备注或OLE对象字段分组。   GROUP BY字段中的Null值以备分组但是不能被省略。   在任何SQL合计函数中不计算Null值。
  GROUP BY子句后最多可以带有十个字段,排序优先级按从左到右的顺序排列。   例:在'WA'地区的雇员表中按头衔分组后,找出具有同等头衔的雇员数目大于1人   的所有头衔。
  Select Title ,Count(Title) as Total   FROM Employees   Where Region = 'WA'   GROUP BY Title   HAVING Count(Title)>1   JET SQL 中的聚积函数   聚集函数 意义   SUM ( ) 求和   AVG ( ) 平均值
  COUNT ( ) 表达式中记录的数目   COUNT (* ) 计算记录的数目   MAX 最大值   MIN 最小值   VAR 方差   STDEV 标准误差   FIRST 第一个值   LAST 最后一个值
  六. 用Parameters声明创建参数查询





 19 / 29
 
  Parameters声明的语法:
  PARAMETERS name datatype[,name datatype[, …]]   其中name 是参数的标志符,可以通过标志符引用参数.   Datatype说明参数的数据类型.
  使用时要把PARAMETERS 声明置于任何其他语句之前.   例:
  PARAMETERS[Low price] Currency,[Beginning date]datatime   Select orderID ,OrderAmount   FROM orders
  Where orderAMount>[low price]   AND orderDate>=[Beginning date]   七. 功能查询
  所谓功能查询,实际上是一种操作查询,它可以对数据库进行快速高效的操作.它以   选择查询为目的,挑选出符合条件的数据,再对数据进行批处理.功能查询包括更新   查询,删除查询,添加查询,和生成表查询.   1 更新查询
  Update子句可以同时更改一个或多个表中的数据.它也可以同时更改多个字段的值.   更新查询语法:   Update 表名   SET 新值   Where 准则
  例:英国客户的定货量增加5%,货运量增加3%   Update OEDERS
  SET orderAmount = orderAmount *1.1   Freight = Freight*1.03   Where ShipCountry = 'UK'   2 删除查询
  Delete子句可以使用户删除大量的过时的或冗于的数据.   注:删除查询的对象是整个记录.   Delete子句的语法:   Delete [表名.*]   FROM 来源表   Where 准则
  例: 要删除所有94年前的定单   Delete *   FROM orders
  Where orderData<#94-1-1#





 20 / 29
 
  3 追加查询
  Insert子句可以将一个或一组记录追加到一个或多个表的尾部.   INTO 子句指定接受新记录的表
  valueS 关键字指定新记录所包含的数据值.   Insert 子句的语法:
  INSETR INTO 目的表或查询(字段1,字段2,…)   valueS(数值1,数值2,…)   例:增加一个客户
  Insert INTO Employees(FirstName,LastName,title)   valueS('Harry','Washington','Trainee')   4 生成表查询
  可以一次性地把所有满足条件的记录拷贝到一张新表中.通常制作记录的备份或副   本或作为报表的基础.
  Select INTO子句用来创建生成表查询语法:   Select 字段1,字段2,…   INTO 新表[IN 外部数据库]   FROM 来源数据库   Where 准则
  例:为定单制作一个存档备份   Select *
  INTO ordersArchive   FROM orders   八. 联合查询
  UNION运算可以把多个查询的结果合并到一个结果集里显示.   UNION运算的一般语法:
  [表]查询1 UNION [ALL]查询2 UNION …   例:返回巴西所有供给商和客户的名字和城市   Select CompanyName,City   FROM Suppliers   Where Country = 'Brazil'   UNION
  Select CompanyName,City   FROM Customers   Where Country = 'Brazil'   注:
  缺省的情况下,UNION子句不返回重复的记录.如果想显示所有记录,可以加ALL选项   UNION运算要求查询具有相同数目的字段.但是,字段数据类型不必相同.





















 25 / 29
 
  mysql> update user set password=password(”xueok654123″) where user=‟root‟;   mysql> flush privileges //刷新数据库   mysql>use dbname; 打开数据库:   mysql>show databases; 显示所有数据库
  mysql>show tables; 显示数据库mysql中所有的表:先use mysql;然后   mysql>describe user; 显示表mysql数据库中user表的列信息);   3、grant
  创建一个可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令something做这个
  mysql> grant all privileges on *.* to user@localhost identified by ‟something‟ with   增加新用户
  格式:grant select on 数据库.* to 用户名@登录主机 identified by “密码”
  GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY ‟something‟ WITH GRANT OPTION;
  GRANT ALL PRIVILEGES ON *.* TO mailto:monty@”” IDENTIFIED BY ‟something‟ WITH GRANT OPTION;   删除授权:
  mysql> revoke all privileges on *.* from mailto:root@””;   mysql> delete from user where user=”root” and host=”%”;   mysql> flush privileges;
  创建一个用户custom在特定客户端it363.com登录,可访问特定数据库fangchandb
  mysql >grant select, insert, update, delete, create,drop on fangchandb.* to custom@ it363.com identified by „ passwd‟   重命名表:
  mysql > alter table t1 rename t2;   4、mysqldump   备份数据库
  shell> mysqldump -h host -u root -p dbname >dbname_backup.sql   恢复数据库
  shell> mysqladmin -h myhost -u root -p create dbname
  shell> mysqldump -h host -u root -p dbname < dbname_backup.sql   如果只想卸出建表指令,则命令如下:
  shell> mysqladmin -u root -p -d databasename > a.sql
  如果只想卸出插入数据的sql命令,而不需要建表命令,则命令如下:   shell> mysqladmin -u root -p -t databasename > a.sql
  那么如果我只想要数据,而不想要什么sql命令时,应该如何操作呢?   mysqldump -T./ phptest driver





 26 / 29
 
  其中,只有指定了-T参数才可以卸出纯文本文件,表示卸出数据的目录,./表示当前目录,即与mysqldump同一目录。如果不指定driver 表,则将卸出整个数据库的数据。每个表会生成两个文件,一个为.sql文件,包含建表执行。另一个为.txt文件,只包含数据,且没有sql指令。
  5、可将查询存储在一个文件中并告诉mysql从文件中读取查询而不是等待键盘输入。可利用外壳程序键入重定向实用程序来完成这项工作。例如,如果在文件my_file.sql 中存放有查   询,可如下执行这些查询:
  例如,如果您想将建表语句提前写在sql.txt中:   mysql > mysql -h myhost -u root -p database < sql.txt   // 启动服务   mysqld --console   // 停止服务
  mysqladmin -u root shutdown   // 登录后使用数据库 mysql   mysql -u root -p mysql
  mysql -u root -p -h 11.11.11.11 database   // 创建数据库
  create database db_name [default character set=gbk]   // 设置数据库默认字符集
  alter databse db_name default character set gbk   // 更换数据库 use database test after log on   use test
  // 创建一个带图像字段的表 create a table mypic to store picture   create table mypic (picid int, picname varchar(20), content blob);   // 显示表的结构 describe table mypic   desc mypic
  // 显示当前表的建表语句   show create table table_name   // 更改表类型
  alter table table_name engine innodb|myisam|memory   // 插入一条记录 insert a record
  insert into mypic values (1, '第二章', 0x2134545);   // 显示当前用户 show current user   select user();
  // 显示当前用户密码 show current password   select password('root');
  // 显示当前日期 show current date   select now();





 27 / 29
 
  // 更改用户密码 change user password
  update user set password=password('xxx') where user='root';   // 分配用户权限 grant
  grant all privileges on *.* toroot@localhost
  grant select,insert,delete,update,alter,create,drop on lybbs.* mailto:tolybbs@"" identified by "lybbs";
  grant select,insert,delete,update,alter,create,drop on lybbs.* tolybbs@localhostidentified by "lybbs";
  // 在不重启的情况下刷新用户权限 flush privileges   flush privileges
  // 向表中增加一个主键 add primary key   alter table mypic add primary key (picid)
  // 修改表结构增加一个新的字段 add a new column userid after picid   alter table mypic add column userid int after picid
  // 更改列类型,当存储图像过大时,使用默认blob超不过100k   alter table userpic change image image longblob;   alter table userpic modify image longblob;   // 设置默认字符集为gb2312
  mysqld --default-character-set=gb2312   // 显示详细信息,包括字符集编码   show full columns from userpic;   // 改变表的编码
  Alter TABLE userpic CHARACTER SET gb2312;   // mysql jdbc连接url 使用中文
  jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=gb2312   // 执行外部脚本   source 
  MySQL是最受欢迎的开源SQL数据库管理系统,由MySQL AB开发、发布和支持。MySQL AB是一家基于MySQL开发人员的商业公司,是一家使用了一种成功的商业模式来结合开源价值和方****的第二代开源公司。MySQL是MySQL AB的注册商标。
  MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(mass-deployed)的软件中去。      





 28 / 29 
 
               

0 0