zoukankan      html  css  js  c++  java
  • my sql 的基本操作

    # 关系型数据库和非关系型数据库
    
    # 结构化查询语言(Structured Query Language)简称SQL
    
    # 关系型和非关系型之间的实际用处
    # NOSQL非关系型数据库小结:
    #     1、NOSQL不是否定关系数据库,而是作为关系数据库的一个重要补充
    #     2、NOSQL为了高性能、高并发而生,忽略影响高性能,高并发的功能
    #     3、NOSQL典型产品memcached (纯内存),redis(持久化缓存),mongodb(文档的数据库)
    # MySQL 属于关系型数据库

    创建数据库的命令
    create database mydb_name charset=utf8;
    ## 方法1,直接在dos命令行下(需要添加环境变量)
    # 格式:mysqladmin -u用户名 -p旧密码 password 新密码
    
    # 方法2: 用SET PASSWORD命令
    # 首先登录MySQL,使用mysql自带的那个客户端连接上mysql。
    # 格式:mysql> set password for 用户名@localhost = password('新密码');
    
    # 方法3:用UPDATE直接编辑那个自动的mysql库中的user表
    # 首先登录MySQL,连接上mysql服务端。
    # mysql> use mysql;   use mysql的意思是切换到mysql这个库,
    # 这个库是所有的用户表和权限相关的表都在这个库里面,我们进入到这个库才能修改这个库里面的表。
    # mysql> update user set password=password('123') where user='root' and host='localhost';   其中password=password('123') 前面的password是变量,后面的password是mysql提供的给密码加密用的,
    # 我们最好不要明文的存密码,对吧,其中user是一个表,存着所有的mysql用户的信息
    # mysql> flush privileges #刷新
    # shell>mysql -u root -p
    # mysql> update user set password=password(”xueok654123″) where user=’root’;
    修改mysql中的root的密码


    1 my sql 的常用命令
    #  select version(),current_date;# 显示当前mysql版本和当前日期
    SQL 包含4个部分
    1.1数据定义语言DDL(Data Definition Language):操作的对象时数据库和表
    常用的关键字   create alter drop truncate(删除当前表再新建一个一模一样的表结构)
    
    # use dbname; 打开数据库:
    # create database [if not exists] db_name [character set xxx]; 创建数据库
    # use databasename; 选择数据库
    #alter database db_name [character set xxx]
    # drop database name 直接删除数据库,不提醒
    # mysqladmin drop database name 删除数据库前,有提示。
    # 查看当前使用的数据库
    # select database()
    # mysql> flush privileges //刷新数据库
    
    #   创建表:create table student(
    #
    #       id int(4) primary key auto_increment,
    #
    #       name varchar(20),
    #
    #       score int(3)
    #
    #     );#varchar类型的长度是可变的,取值范围是0-65535
    # varchar类型实际占用空间为字符串的实际长度加1
    # char类型的长度是固定的,在创建表时就指定了,其长度可以是0-255之间的任意值。
    # 虽然char占用的空间比较大,但它的处理速度快
    # alter table student rename (to) teacher; 表的重命名
    # alter table student add password varchar(20); 增加字段
    # alter table student change password pwd varchar(20);重命名字段 change 旧字段,新字段
    # alter table student modify pwd int; 修改字段的类型
    # alter table student drop pwd; 删除一些字段
    
    #alter table student add constraint panzhenwnei foregin key(字段)  references 父表(被关联字段); 添加外键
    #alter table student drop foreign key panzhenwei   删除外键
    # alter table tab_name add primary key(字段名称,...) 添加主键
    
    # 以表格的形式显示结果
    # desc t1;#查看表的结构
    # describe t1;#上下这两句是一样的结果
    #show columns from 表名 也可以查看表的结构
    
    # show tables; 显示库中所有的表
    # describe tablename; 表的详细描述
    # describe user; 显示表mysql数据库中user表的列信息);
    # show create table 表名  # 查看当前建数据库建立表的语句
    数据定义语言DDL
    1.2:数据操纵语言DML(Data Manipulation Language)对象:纪录(行)
    关键词:insert update delete
    # 插入:insert into student values(01,'tonbby',99); (插入所有的字段)
    #       insert into student(id,name) values(01,'tonbby'); (插入指定的字段)
    # #
    # 更新:update student set name = 'tonbby',score = '99' where id = 01;
    # #
    # 删除:delete from tonbby where id = 01;
    # delete from t1 where id=1; #删除id为1的行
    # truncate table t1;数据量大,删除速度比上一条快,且直接从零开始
    
    # update t1 set name='sb' where id=2; #把id为2的行(记录)中的name字段的数据改为sb;id>1;id<=1;等等都可以
    # update t1 set name='sb',id=88 where id>2; #对两个字段进行修改
    # update t1 set name='sb';#如果不指定where,那么会name字段的所有数据都改成sb
    数据操纵语言DML

    1.3:数据查询语言DQL(Data Query Language)

    通过查询语句查询出来的也是一张表,是存放在内存中的虚拟表,可以在查询出来的时候,对查询的字段的名称进行定义
    # select ... from student where 条件 group by 分组字段 having 条件 order by 排序字段
    # SELECT name, salary*12 AS Annual_salary FROM employee; #as + 新字段名,就是起一个别名的意思
    
    # 执行顺序:from->where->group by->having->order by->select
    
    # select 中加上distinct去除重复字段
    # select * from t1; #查看t1表中所有字段的数据,select 字段 from 表。
    # select id,name from t1;#查看t1表中的id和name列的数据,其他的不看,注意格式,每个字段逗号分隔,
    # select distinct 字段1,字段2..... from  表名 where 条件 group by 字段(按照这个字段进行分组)
    #     having  函数  (进行筛选)
    #     order by 字段 asc/desc(按照这个字段进行排序)
    #     limit 0,5   表示的是从索引为0的位置开始取5条数据
    #
    # distinct  一定要写在查询的字段的前面,并且只有distinct后的所有的字段的值都一样的时候才会去重
    #where  后面可以添加的条件类型为
    # 1.比较运算符:> < >= <= <> !=
    # 2.between 80 and 100 值在80到100之间
    # 3.in(80,90,100)  值是80或90或100
    # 4.like 'egon%'   %表示任意多字符,  _表示一个字符
    # 5.逻辑运算符:在多个条件直接可以使用逻辑运算符 and or not
    # 6.关键字IS NULL(判断某个字段是否为NULL不能用等号,需要用IS) 判断null只能用is
    
    
    # group by 可以按照任意字段分组,但是分组完毕后,比如group by post,只能查看post字段,如果想查看组内信息,或需要借助于聚合函数
    # eg :如果使用了group by +post  但是在select的时候却select 包含了其他的字段,那么在取值的时候,取到的是每个分组的第一条
    # 如果想要避免这种情况出现的,可以将sql.mode设置为 ONLY_FULL_GROUP_BY,这样再出现上面这种查法的话,会直接报错
    
    # mysql> select @@global.sql_mode;#查看当前的sql_mode
    # 设置sql_mode
    # sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,'
    # 如果想要在使用group by  的时候显示其他的字段的信息的可以可以通过使用group_concat() >>>(聚合函数,用于字符串的拼接)
    #
    # group by 通常和聚合函数(avg(),count()...)一起使用 ,经常先使用group by关键字进行分组,然后再进行集合运算。
    # group by与having 一起使用,可以限制输出的结果,只有满足条件表达式的结果才会显示。
    # having和where的区别:
    # 两者起作用的地方不一样,where作用于表或视图,是表和视图的查询条件。having作用于分组后的记录,用于选择满足条件的组。
    #where > group by > having
    # Having发生在分组group by之后,因而Having中可以使用分组的字段,无法直接取到其他字段,having是可以使用聚合函数
    
    # SELECT * from employee ORDER BY age, salary DESC; #先按照age 排序,在按照salary进行排序
    
    # ifnull()的具体作用是在查询的时候,如果碰到了一个字段的是数据是null的的话,就把他打成某个数据进行处理,
    # eg: ifnull(字段,0)表示对 是如果在这个字段中遇到了为null的数据的话,都把它当成0来处理
    # null与任何数进行运算都是null
    
    # 聚合函数
    
    # 聚合函数聚合的是组的内容,若是没有分组,则默认一组
    # count ()   统计返回的个数
    # select count(name) from employee
    # count、max、min、avg、sum   #常用的聚合函数
    
    # 使用正则表达式进行查询
    # SELECT * FROM employee WHERE name REGEXP 'on$';  #查找名字以on结尾的
    
    # 可以对查询的结果进行操作
    # eg :SELECT name, salary*12 FROM employee; 支持四则运算
    # 自定义显示的格式
    # CONCAT() 函数用于连接字符串
    # SELECT CONCAT('姓名: ', name, '  年薪: ', salary * 12) AS Annual_salary  FROM employee;
    
    # CONCAT_WS() 第一个参数为分隔符来进行字符串拼接
    数据查询语言DQL

    1.4:数据控制语言DCL(Data Control Language)

    # 数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,
    # 对数据库实行监视,用户,权限,事务等。
    #
    #   grant:授权,rollback:回滚。commit:提交。
    数据控制语言DCL
    
    




  • 相关阅读:
    CentOS6 install Ruby 1.9.3
    php注释规范
    ecstore小记
    关于local storage 和 session storage以及cookie 区别简析
    local storage 简单应用‘’记住密码’
    点击按钮播放音频 停止后再次点击再次播放 添加背景音乐
    页面触底自动加载数据
    侧导航下载
    解决ie对于Bootstrap的兼容性问题
    js判断微信 选择浏览器打开
  • 原文地址:https://www.cnblogs.com/vivi0403/p/10072793.html
Copyright © 2011-2022 走看看