`
kongzimengsheng1
  • 浏览: 68542 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mysql 权威指南笔记

阅读更多
///==============================

多年前,就买了一个本mysql权威指南!
一页没看过

想从mysql上打开一个深入的缺口从它上来比较不错

我觉的首先了解mysql 基本的常用语法;
再深入了解一些mysql,优化SQL,设计与实现测试的工作!
mysql 也有function prodecuted[复杂的功能先不看,测试一些数据用的上..]

阿弥陀佛,开始:




我使用的myqsl权限是.
mysql> select version();
+---------------------+
| version()           |
+---------------------+
| 5.0.37-community-nt |
+---------------------+
1 row in set (0.00 sec)


还行不老不新,先在window环境下把它搞定,再上linux,

我个人习惯root 访问,不合适;;


给sampdb库,设一个管理员帐户tom 密码tom
grant all on sampdb.* to 'tom'@'localhost' identified by 'tom';
权限问题,没搞清;;
现在只有root可以,做上面的操作;

grant all on jpetstone.* to 'tom'@'localhost' identified by 'tom';


C:\>mysql -u tom -p
Enter password: ***
mysql>

1:当前时间
2:当前用户
3:当前数据库系统版本
mysql> select now(),user(),version();
+---------------------+---------------+---------------------+
| now()               | user()        | version()           |
+---------------------+---------------+---------------------+
| 2009-11-01 15:34:48 | tom@localhost | 5.0.37-community-nt |
+---------------------+---------------+---------------------+
1 row in set (0.00 sec)

在查询的参数后面加一个\G;
1:查询显示为竖形式,
   这个功能可是非常有用,当我们要查询优化时这一点可是用的上;

mysql> select now(),user(),version() \G
*************************** 1. row ***************************
    now(): 2009-11-01 15:36:00
   user(): tom@localhost
version(): 5.0.37-community-nt
1 row in set (0.00 sec)


创建数据库;
create database sampdb;

创建脚本;
#总统
create table president(
last_name  varchar(15) not null,
first_name varchar(15) not null,
suffix     varchar(5) null,
city       varchar(20) not null,
state      varchar(2) not null,
birth      date not null,
death      date null
);
#会员
create table member(
member_id int unsigned not null auto_increment,
primary key(member_id),
last_name  varchar(15) not null,
first_name varchar(15) not null,
suffix     varchar(5) null,
expiration date null default '0000-00-00',
email      varchar(100) null,
street     varchar(50) null,
city       varchar(20) null,
state      varchar(2) null,
zip        varchar(10) null,
phone      varchar(20) null,
interests  varchar(255) null
);

查询所有的表;
mysql> show tables;
+------------------+
| Tables_in_sampdb |
+------------------+
| member           |
| president        |
+------------------+
2 rows in set (0.00 sec)
查询所有的库;
mysql> show databases;

//======================================

create table student(
name varchar(20) not null,
sex  enum('F','M') not null,
student_id int unsigned not null auto_increment,
primary key (student_id)
);

create table event(
date date not null,
type enum('T','Q')not null,
event_id int unsigned not null auto_increment,
primary key(event_id)
);

create table score(
student_id int unsigned not null,
event_id   int unsigned not null,
primary key(event_id,student_id),
score int not null
);

create table absence(
student_id int unsigned not null,
date date not null,
primary key(student_id,date)
);


//==================================
查询当然是要了解一个特点;
学oracle 我知道有一个 dual 表;;
在mysql可不用;
mysql> select user();  这一点还不错;

限制查询的行个数;
mysql> select * from user
    -> order by name limit 5;
+----+---------+------+
| id | name    | mid  |
+----+---------+------+
|  1 | manager | NULL |
|  2 | tom0    |    1 |
|  3 | tom1    |    1 |
|  4 | tom2    |    1 |
|  5 | tom3    |    1 |
+----+---------+------+
5 rows in set (0.00 sec)

mysql> select * from user
    -> order by name limit 3,5;
+----+------+------+
| id | name | mid  |
+----+------+------+
|  4 | tom2 |    1 |
|  5 | tom3 |    1 |
|  6 | tom4 |    1 |
|  7 | tom5 |    1 |
|  8 | tom6 |    1 |
+----+------+------+
5 rows in set (0.00 sec)

随机选出一条记录,不错;

select * from user
order by  rand() limit 1;


//========================
日期常用处理方式;
select * from uu where rdate = '2009-11-04';
select * from uu where month(rdate) = 11;
select * from uu where year(rdate) = 2009;
select * from uu where dayofmonth(rdate) = 04;


//当前日期与时间
//当前日期
//当前时间
select now();
select curdate();
select curtime();

+------------+
| curdate()  |
+------------+
| 2009-11-04 |
+------------+
+-----------+
| curtime() |
+-----------+
| 15:03:01  |
+-----------+


select date_format(now(),'%Y-%m-%d %H:%i:%S') ;
+----------------------------------------+
| date_format(now(),'%Y-%m-%d %H:%i:%S') |
+----------------------------------------+
| 2009-11-04 15:11:05                    |
+----------------------------------------+
mysql> select date_format(now(),'%Y年%m月%d日 %H:%i:%S') 当前时间;
+-------------------------+
| 当前时间                |
+-------------------------+
| 2009年11月04日 15:13:05 |
+-------------------------+
1 row in set (0.00 sec)

//===========================================
建国60周年
to_days()天数;;

mysql> select round((to_days(now()) - to_days('1949-10-1'))/365);
+----------------------------------------------------+
| round((to_days(now()) - to_days('1949-10-1'))/365) |
+----------------------------------------------------+
|                                                 60 |
+----------------------------------------------------+
1 row in set (0.00 sec)


//============================
设置和使用sql变量;

我感觉mysql变量,就是一个查询的结果;



select @id := id from uu
where name = 'tom';

mysql> select * from uu
    -> where id = @id;
+----+------+------------+
| id | name | rdate      |
+----+------+------------+
|  1 | tom  | 2009-11-04 |
+----+------+------------+
1 row in set (0.00 sec)

//=======================================

mysql> select * from student;
+----+-------+------+
| id | name  | age  |
+----+-------+------+
|  1 | tom   |   10 |
|  2 | jerry |   20 |
|  3 | long  |   20 |
+----+-------+------+

mysql> select * from score;
+----+---------+------+
| id | name    | rs   |
+----+---------+------+
|  1 | gaoshu  |    0 |
|  2 | english |    1 |
+----+---------+------+
2 rows in set (0.00 sec)

mysql> select * from rel;
+----+------+------+
| id | sid  | scid |
+----+------+------+
|  1 |    1 |    1 |
|  2 |    1 |    2 |
+----+------+------+
2 rows in set (0.00 sec)


1:
查询tom所选科目;
mysql> select s.id,s.name,sc.name
    -> from student s,score sc,rel r
    -> where s.id = r.sid and sc.id = r.scid;
+----+------+---------+
| id | name | name    |
+----+------+---------+
|  1 | tom  | gaoshu  |
|  1 | tom  | english |
+----+------+---------+
2 rows in set (0.00 sec)

2:
查询没有选课的人员名称;
mysql> select s.id,s.name,count(r.scid)
    -> from student s left join rel r
    -> on s.id = r.sid
    -> group by s.id,s.name
    -> ;
+----+-------+---------------+
| id | name  | count(r.scid) |
+----+-------+---------------+
|  1 | tom   |             2 |
|  2 | jerry |             0 |
|  3 | long  |             0 |
+----+-------+---------------+
3 rows in set (0.04 sec)

select s.id,s.name,count(r.scid)
from student s left join rel r
on s.id = r.sid
group by s.id,s.name
having count(r.scid) = 0;

+----+-------+---------------+
| id | name  | count(r.scid) |
+----+-------+---------------+
|  2 | jerry |             0 |
|  3 | long  |             0 |
+----+-------+---------------+
2 rows in set (0.03 sec)



///==============================

今天看书,有一个小知识点:
1:auto_increment
mysql> create table mytb1(
    -> seq int auto_increment not null,
    -> primary key(seq)
    -> )type=myisam auto_increment = 3000;
Query OK, 0 rows affected, 1 warning (0.12 sec)

mysql> insert into mytb1 values(null);
Query OK, 1 row affected (0.00 sec)

mysql> insert into mytb1 values(null);
Query OK, 1 row affected (0.00 sec)

mysql> insert into mytb1 values(null);
Query OK, 1 row affected (0.00 sec)

mysql> select * from mytb1;
+------+
| seq  |
+------+
| 3000 |
| 3001 |
| 3002 |
+------+
3 rows in set (0.00 sec)

create table counter(
name varchar(20),
value int(20),
primary key(value));




2:regex

我们在搜索字符串时,常用like 
功能是比较弱的,今天发现mysql居然支持正则表达式;
mysql> select * from user where name like 't__0';
+----+------+------+
| id | name | mid  |
+----+------+------+
|  2 | tom0 |    1 |
+----+------+------+
1 row in set (0.00 sec)

select * from user where name regexp '^[a-z0-9]{4}$';
+----+------+------+
| id | name | mid  |
+----+------+------+
|  2 | tom0 |    1 |
|  3 | tom1 |    1 |
|  4 | tom2 |    1 |

//=================================
查看字符集:

mysql> show  create database test;
+----------+--------------------------------------------------------------+
| Database | Create Database                                              |
+----------+--------------------------------------------------------------+
| test     | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET gbk */ |
+----------+--------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> show  create table user;
+-------+-----------------------------------------------------------------------------
--------+
| Table | Create Table
        |
+-------+-----------------------------------------------------------------------------
--------+
| user  | CREATE TABLE `user` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(255) default NULL,
  `mid` int(11) default NULL,
  PRIMARY KEY  (`id`),
  KEY `FK36EBCBA429B0BC` (`mid`),
  CONSTRAINT `FK36EBCBA429B0BC` FOREIGN KEY (`mid`) REFERENCES `user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk |
+-------+-----------------------------------------------------------------------------
mysql> show character set;

分享到:
评论

相关推荐

    MySQL权威指南读书笔记

    MySQL权威指南是一本深入介绍MySQL数据库管理和使用的书籍。在第一章中,作者首先引导读者理解数据库的基本概念,并通过实例解释了数据库的重要性以及关系数据库的工作原理。MySQL作为一款流行的关系型数据库管理...

    《PHP与MySQL权威指南》读书笔记模板x.pptx

    _PHP与MySQL权威指南》读书笔记模板_ 本书《PHP与MySQL权威指南》是目前为止最全面的关于PHP与MySQL开发技术的书籍之一,系统而全面地讲解了PHP与MySQL技术的方方面面,适合初中级的PHP程序员系统地学习。本书也是...

    前端开发书籍推荐与学习路线.docx

    * 推荐书籍:《MySQL 权威指南》等 * 学习方法:了解关系型数据库、SQL 语言等基础知识 八、其他推荐书籍 * 《深化理解 ES6》 * 《前端开发工程师手册》 * 《JavaScript 进阶》 * 《计算机网络进阶》 九、在线...

    笔记:读书笔记,读书笔记

    :open_book: 读书笔记 :slightly_smiling_face: :upside-down_face: 买过很多书,也打印过很多电子版的书籍和资料,断断续续的读,杂乱无章。心血来潮,想自己整理一下,希望可以坚持下去,不断...Git权威指南 网络安全

    notes:JavaJava后端工程师的学习笔记https

    loveincode's notes 学习工作中的一些记录,收藏。 操作系统 , 编译原理 , 计算机网络 , 互联网协议... 常用数据结构与算法 Java 实现 数据结构 与 排序算法 ...Effective Java , HTTP权威指南 , Java

    高级java笔试题-EBook-PDF:ITPDF电子书

    Netty权威指南第2版.pdf HTTP权威指南.pdf 数据库 MySQL技术内幕InnoDB存储引擎第2版.pdf 深入浅出MySQL++数据库开发、优化与管理维护+第2版+唐汉明.pdf Linux Linux Shell编程从入门到精通.张昊.pdf Scala SCALA...

    java8源码-becoming-programming-god:成为编程之神,记录所有技术难点,梳理个人技术栈,从编程语言到分布式系统,到服

    java8 源码 becoming-programming-god 成为编程之神 1. 基础知识 (basic) 1.1 数据结构(data structure) ...读书笔记(comment) ...Mysql技术内幕 ...Kafka权威指南 3.9 Http权威指南 3.10 Java8实战 3.11

    8号店铺源码

    不错的项目源码mysql数据库(教学光盘)(1) struts2权威指南(1) 15天学会jquery(1) struts2+hibernate+spring经典整合实例教程(1) spring框架案例学习文档笔记(1) ext_js(1) struts2,spring

    Notes-of-books-in-Xmind:一些读书笔记,思维导图

    算法&数据结构计算机网络操作系统Python基础Python基础教程python学习手册(第四版)Python进阶Python cookbookFluent Pythonpython核心编程(第三版)Python编程导论(第二版)Python框架Flask web开发数据库MongoDB权威...

    深入java虚拟机源码-books-recommendation:后端进阶经典图书

    Kubernetes权威指南:从Docker到Kubernetes实践全接触(第2版) 鸟哥Linux私房菜 MySQL技术内幕_InnoDB存储引擎_第2版 高性能mysql第三版 Netty实战 Netty权威指南_第2版_带书签目录_完整版.pdf 精通正则表达式_中文...

    java学习资料总结2015新

    - **《OracleDatabase11g性能优化攻略》** 和 **《MySQL5权威指南(第3版)》** 等书籍提供了关于数据库管理和优化的专业知识,对于后端开发者来说非常重要。 - **《MongoDB权威指南》** 介绍了 MongoDB 这一非...

    中国计算机年鉴2008 电脑报阅读系统2009

    《中国计算机年鉴2008 电脑报阅读系统2009》是一部全面记录2008年中国计算机行业发展状况的权威资料集,结合了2009年的电脑报阅读系统,为用户提供了便捷的电子阅读体验。这个压缩包包含了当年最新的计算机技术资讯...

Global site tag (gtag.js) - Google Analytics