mysql数据库的基本操作语句

来源:互联网 发布:大时代 知乎 编辑:程序博客网 时间:2024/05/21 14:59
用户管理:
1.新建用户:
   >CREATE USER name IDENTIFIED BY'cc';
2.更改密码:
   >SET PASSWORD FOR name=PASSWORD('123');
3.权限管理
   >SHOW GRANTS FOR name;//查看name用户权限
   >GRANT SELECT ON db_name.* TO name;//给name用户db_name数据库的所有权限
   >REVOKE SELECT ON db_name.* TO name;//GRANT的反操作,去除权限;
一、数据库操作
1.查看数据库:
    >SHOW DATABASES;
2.创建数据库:
   >create database db_name;
3.使用数据库:
   >use db_name;
4.删除数据库:
   >drop database db_name;
二、创建表:
1.创建表:
   >create table table_name(id tinyint unsigned not null auto_increment,    //id值,无符号,非空,递增、唯一性可以做主键

   >name VARCHAR(60) NOT NULL 
   >score tinyint unsigned not null defatlt 0,//设置默认列值
   >PRIMARY KEY(id))ENGINE=InnoDB)//设置表的存储引擎,一般常用InnoDB和MyISAM;InnoDB可靠,支持事务;MyISAM高效不支持全文检索
    >DEFAULT charset=utf8;//设置默认的编码,防止数据库中文乱码
    如果有条件的创建数据库表还可以使用 >CREATE TABLE IF NOT EXISTS tb_name(.....)
2.复制表: 
    >create table table_name select * from tb_name;
    或者部分复制:
    >create table tb_name2 select id,name from tb_name;
3.创建临时表
    >create temporary table tb_name(这里和创建普通表一样);
4.查看数据库中可用的表:
   >show tables;
5.查看表的结构:
   >describe tb_name;
   也可以使用;
   >show columns in tb_name;//from也可以
6.删除表:
    >drop[temporary] table [if exists] tb_name[,tb_name2...];
   实例:
   >drop table if exists tb_name;
7.表重命名:
   >rename table name_old to name_new; 
   还可以使用:
   >alter table tb_name ADD[change,rename,drop]...要更改的内容。。
   >alter table tb_name add column address varchar(80) NOT NULL;
   >alter table tb_name chage score score AMALLINT(4) NOT NULL;
四、插入数据:
1.插入数据:
    insert into tb_name(id,name,score)VALUES(NULL,'张三',140),(NULL,'张四',178),(NULLL,'张五',134);
    这里的插入多条数据直接在后面加上逗号,直接写入插入的数据即可;之间id是自增的列,可以不用写。
2.插入检索出来的数据:
   >insert into tb_name(name,score) select name,score from tb_name2;
五、更新数据:
1.指定更新数据库:
    >update tb_name set score= 289 WHERE id=2;
    >update tablename set column name= new value [where conditon]
六、删除数据;
1.删除数据:
    >delete from tb_name where id=3;
七、条件控制:
1.WHERE语句:
    >select *from tb_name where id=3;
2.HAVING语句:
    >select *from tb_table group by score HAVING count(*)>2
3.相关条件控制符:
    =,>,<,<>,in(1,2,3...),BETWEEN a AND b,NOT,AND,OR
Linke()用法中 %为匹配任意,_匹配一个字符(可以是汉字)
IS NULL 控制检测
八、M有SQL的正则表达式:
1.Mysql支持REGEXP的正则表达式:
    >select *from tb_name where name REGEXP `[A-D]`//找出以A-D为开头的name
2.特殊字符需要转义
九、MySQL的一些函数:
    1.字符串连接--CONCAT()
    >select concat(name,'=>',score) from tb_name
2.数字函数:
    AVG,SUM,MAX,MIN,COUNT;
3.文本处理函数:
    TRIM,LOCATE,UPPER,LOWER,SUBSTRING
4.运算符:
    +,-,*,\
5.时间函数;
    DATE(),CURTIME(),DAY(),YEAR(),NOW().....
十、分组查询:
1.分组查询可以按照指定的列进行分组:
    >select count(*) from tb_name GROUP BY score HABING COUNT(*)>1;
2.条件使用HAVING;
3.ORDER BY 排序:
    ORDER BY DESC|ASC     =>按数据的降序和升序排列
十一、UNION 规则--可以执行两个语句(可以去除重复行)
十二、全文检索--MATCH和AGAINST
    1.select match(note_text)AGAINST('PICASO') FROM TB_NAME;
2.innoDB引擎不支持全文检索,MyISAM可以;
十三、视图
1.创建视图
    >create view name as select *from tb_name where ~~ order by ~~;
2视图的特殊作用:
    a.简化表之间的联结(把联结写在select中);
    b.重新格式化输出检索的数据
    c.过滤不想要的数据(select部分)
    d.使用视图计算字段值,如汇总这样的值。
十四、使用存储过程:
个人理解,存储过程就是一个自定义函数,有局部变量参数,可传入参数,可以返回值
    1.创建存储过程:
    >create procedure pro(
    >IN num INT,OUT total INT)
    >BEGIN
    >SELECT SUM(score) INTO total FROM tb_name WHERE id=num;
    >END;
    ***这里的 IN(传递一个值给存储过程)、OUT(从存储过程传一个值),





0 0