按下回车键跳到正文

[转]MYSQL+GIT笔记

Contents
  1. 1. 连接MySQL: mysql -h host_address -u user_name -p user_password
  2. 2. 修改密码:mysqladmin -u user_name -p old_password password new_password
  3. 3. 增加新用户:grant select on db_name.* to user_name@login_host identified by 'user_password'
  4. 4. 创建数据库: create database db_name
  5. 5. 显示数据库: show databases
  6. 6. 删除数据库: drop database db_name
  7. 7. 连接数据库:use db_name
  8. 8. 选择的数据库:select method()
  9. 9. 创建数据表:create table table_name (field_1_name field_1_type [ ,... field_n_name field_n_type ])
  10. 10. 获取表结构:desc table_name 或者 show columns from table_name
  11. 11. 删除表:drop table table_name
  12. 12. 表插入数据:insert into table_name ( field_1_name [ ,... field_n_name ]) values ( value_1 [,... value_n ] )
  13. 13. 查询表数据:select field_1_name [,... field_n_name ] from table_name where sql_expression
  14. 14. 删除表中数据:delete from table_name where sql_expression
  15. 15. 修改表中数据:update table_name set field_name = new_value [ ,…] where sql_expression
  16. 16. 增加字段:alter table table_name [ add field_name field_type / other_sql_expression ]
  17. 17. 修改表名:rename table old_table_name to new_table_name
  18. 18.备份数据库:
  19. 19. 建库建表示例:
  20. 1. 检查是否已经有SSH Key
  21. 2. 生成一个新的SSH Key
  22. 3. Git配置
  23. 4. Git相关操作命令

MySQL基础命令

本文来源于网络,可能存在错漏之处,仅供参考。

1. 连接MySQL: mysql -h host_address -u user_name -p user_password

mysql -h110.110.110.110 -u root -p 123;

2. 修改密码:mysqladmin -u user_name -p old_password password new_password

mysqladmin -u root -p abc123 password def456;

3. 增加新用户:grant select on db_name.* to user_name@login_host identified by 'user_password'

/* mysql grant命令添加用户常用的三种模式 */
grant all PRIVILEGES on *.* to 'test'@'localhost' identified by '123';
grant all PRIVILEGES on *.* to 'test'@'%' identified by '123';
grant all PRIVILEGES on *.* to 'test'@'10.22.225.18' identified by '123';

说明:
第一条命令添加一个本地用户 ‘test’ ,一般用于web服务器和数据库服务器在一起的情况; 第二条命令添加一个用户 ‘test’ ,只要能连接数据库服务器的机器都可以使用,这个比较危险,一般不用;
最后条命令在数据库服务器上给 ‘10.22.225.18’ 机器添加一个用户’test’,一般用于web服务器和数据库服务器分离的情况。

注意:
真正使用的时候不会用 grant all PRIVILEGES on *.* ,而是根据实际需要设定相关的权限。 比如 grant select,insert,delete,update on test.* to 'test'@'localhost' identified by '123';

4. 创建数据库: create database db_name

create database news;

5. 显示数据库: show databases

6. 删除数据库: drop database db_name

drop database news;

7. 连接数据库:use db_name

use news;

use 语句可以通告MySQL把 db_name 数据库作为默认(当前)数据库使用,用于后续语句。该数据库保持为默认数据库,直到语段的结尾,或者直到发布一个不同的 USE 语句:

mysql> USE db1;
mysql> SELECT COUNT(*) FROM mytable;   # selects from db1.mytable
mysql> USE db2;
mysql> SELECT COUNT(*) FROM mytable;   # selects from db2.mytable

8. 选择的数据库:select method()

MySQL中 SELECT 命令类似于其他编程语言里的 print 或者 write,你可以用它来显示一个字符串、数字、数学表达式的结果等等。如何使用 MySQL 中 SELECT 命令的特殊功能?

①显示MYSQL的版本

mysql> select version(); 
+-----------------------+ 
| version()             | 
+-----------------------+ 
| 6.0.4-alpha-community | 
+-----------------------+ 
1 row in set (0.02 sec)

② 显示当前时间

mysql> select now(); 
+---------------------+ 
| now()               | 
+---------------------+ 
| 2009-09-15 22:35:32 | 
+---------------------+ 
1 row in set (0.04 sec)

③显示年月日

SELECT DAYOFMONTH(CURRENT_DATE); 
+--------------------------+ 
| DAYOFMONTH(CURRENT_DATE) | 
+--------------------------+ 
|                       15 | 
+--------------------------+ 
1 row in set (0.01 sec) 
  
SELECT MONTH(CURRENT_DATE); 
+---------------------+ 
| MONTH(CURRENT_DATE) | 
+---------------------+ 
|                   9 | 
+---------------------+ 
1 row in set (0.00 sec) 
  
SELECT YEAR(CURRENT_DATE); 
+--------------------+ 
| YEAR(CURRENT_DATE) | 
+--------------------+ 
|               2009 | 
+--------------------+ 
1 row in set (0.00 sec)

④显示字符串

mysql> SELECT "welecome to my blog!"; 
+----------------------+ 
| welecome to my blog! | 
+----------------------+ 
| welecome to my blog! | 
+----------------------+ 
1 row in set (0.00 sec)

⑤当计算器用

select ((4 * 4) / 10 ) + 25; 
+----------------------+ 
| ((4 * 4) / 10 ) + 25 | 
+----------------------+ 
|                26.60 | 
+----------------------+ 
1 row in set (0.00 sec)

⑥串接字符串

select CONCAT(f_name, " ", l_name) 
AS Name 
from employee_data 
where title = 'Marketing Executive'; 
+---------------+ 
| Name          | 
+---------------+ 
| Monica Sehgal | 
| Hal Simlai    | 
| Joseph Irvine | 
+---------------+ 
3 rows in set (0.00 sec)

注意:这里用到 CONCAT() 函数,用来把字符串串接起来。另外,我们还用到以前学到的 AS 给结果列 'CONCAT(f_name, " ", l_name)' 起了个假名。

9. 创建数据表:create table table_name (field_1_name field_1_type [ ,... field_n_name field_n_type ])

CREATE TABLE IF NOT EXISTS `user` (
  `uid` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `user_name` varchar(20) DEFAULT NULL,
  `user_password` varchar(32) DEFAULT NULL,
  `user_email` varchar(40) DEFAULT NULL,
  PRIMARY KEY (`uid`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

10. 获取表结构:desc table_name 或者 show columns from table_name

使用MySQL数据库desc 表名时,我们看到Key那一栏,可能会有4种值,即 ' ' , 'PRI' , 'UNI' , 'MUL' 。

①如果 Key 是空的, 那么该列值的可以重复, 表示该列没有索引, 或者是一个非唯一的复合索引的非前导列; ②如果 Key 是 PRI , 那么该列是主键的组成部分; ③如果 Key 是 UNI , 那么该列是一个唯一值索引的第一列(前导列),并别不能含有空值(NULL); ④如果 Key 是 MUL , 那么该列的值可以重复, 该列是一个非唯一索引的前导列(第一列)或者是一个唯一性索引的组成部分但是可以含有空值 NULL。 如果对于一个列的定义,同时满足上述4种情况的多种,比如一个列既是 PRI ,又是UNI ,那么 desc table_name 的时候,显示的Key 值按照优先级来显示 PRI->UNI->MUL 。那么此时,显示 PRI 。 一个唯一性索引列可以显示为 PRI ,并且该列不能含有空值,同时该表没有主键。 一个唯一性索引列可以显示为 MUL ,如果多列构成了一个唯一性复合索引,因为虽然索引的多列组合是唯一的,比如 ID+NAME 是唯一的,但是没一个单独的列依然可以有重复的值,只要 ID+NAME 是唯一的即可。

11. 删除表:drop table table_name

DROP TABLE 用于取消一个或多个表。您必须有每个表的 DROP权限。所有的表数据和表定义会被取消,所以使用本语句要小心!

12. 表插入数据:insert into table_name ( field_1_name [ ,... field_n_name ]) values ( value_1 [,... value_n ] )

INSERT INTO user (`uid`, `user_name`, `user_password`, `user_email`) VALUES (1, 'admin', 'admin',  'admin@example.com');

insert into 每次只能向表中插入一条记录。

13. 查询表数据:select field_1_name [,... field_n_name ] from table_name where sql_expression

①查询所有行:

查看表 user 中所有数据 select * from user;

②查询前几行数据:

查看表 user 中前2行数据 select * from user order by id limit 0,2;

注:select 一般配合 where 使用,以查询更精确更复杂的数据。

14. 删除表中数据:delete from table_name where sql_expression

删除表 user 中编号为1 的记录 delete from user where uid=1;

15. 修改表中数据:update table_name set field_name = new_value [ ,…] where sql_expression

如更新 id 为 1 的 user,设置 user_name字段值为 Mary

update user set user_name='Mary' where id=1;

①单表的MySQL UPDATE语句:

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition] [ORDER BY ...] [LIMIT row_count]

②多表的UPDATE语句:

UPDATE [LOW_PRIORITY] [IGNORE] table_references SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition]

UPDATE 语法可以用新值更新原有表行中的各列。SET 子句指示要修改哪些列和要给予哪些值。WHERE 子句指定应更新哪些行。如果没有 WHERE 子句,则更新所有的行。如果指定了 ORDER BY 子句,则按照被指定的顺序对行进行更新。 LIMIT 子句用于给定一个限值,限制可以被更新的行的数目。

16. 增加字段:alter table table_name [ add field_name field_type / other_sql_expression ]

在表 user 中添加了一个字段 user_pic ,类型为 varchar(40),默认值为 NULL alter table user add user_pic varchar(40) default NULL;

加索引 alter table employee add index emp_name (name);

加主关键字的索引 alter table employee add primary key(id);

加唯一限制条件的索引 alter table employee add unique emp_name2(cardnumber);

删除某个索引 alter table employee drop index emp_name;

增加字段 alter table user add user_pic varchar(40) default NULL;

修改原字段名称及类型 ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;

删除字段 ALTER TABLE table_name DROP field_name;

17. 修改表名:rename table old_table_name to new_table_name

当你执行 RENAME 时,你不能有任何锁定的表或活动的事务。你同样也必须有对原初表的 ALTER 和 DROP 权限,以及对新表的 CREATE 和 INSERT 权限。 如果在多表更名中,MySQL 遭遇到任何错误,它将对所有被更名的表进行倒退更名,将每件事物退回到最初状态。

18.备份数据库:

①导出整个数据库,导出文件默认是存在mysql\bin目录下 mysqldump -u user_name -p user_password db_name > new_db_name.sql ②导出一个表 mysqldump -u user_name -p user_password database_name table_name > outfile_name.sql ③导出一个数据库结构 mysqldump -u user_name -puser_password -d -add-drop-table database_name > outfile_name.sql -d 没有数据 -add-drop-table 在每个 create 语句之前增加一个 drop table ④带语言参数导出 mysqldump -u user_name -p user_password -default-character-set=latin1 -set-charset=gbk -skip-opt database_name > outfile_name.sql

19. 建库建表示例:

drop database if exists school; //如果存在SCHOOL则删除
create database school; //建立库SCHOOL
use school; //打开库SCHOOL
create table teacher //建立表TEACHER
(
    id int(3) auto_increment not null primary key,
    name char(10) not null,
    address varchar(50) default ‘深圳’,
    year date
); //建表结束

//以下为插入字段
insert into teacher values(”,’allen’,'大连一中’,'1976-10-10′);
insert into teacher values(”,’jack’,'大连二中’,'1975-12-23′);

如果你在 mysql 提示符键入上面的命令也可以,但不方便调试。

①你可以将以上命令原样写入一个文本文件中,假设为 school.sql ,然后复制到 c:\ 下,并在 DOS 状态进入目录 mysql\bin ,然后键入以下命令: mysql -u user_name -p user_password < c:\school.sql

如果成功,空出一行无任何显示;如有错误,会有提示。(以上命令已经调试,你只要将//的注释去掉即可使用)。

②或者进入命令行后使用 mysql> source c:\school.sql; 也可以将 school.sql 文件导入数据库中。

 

Git设置与使用帮助

参考网站:
http://rogerdudler.github.io/git-guide/index.zh.html
http://git.oschina.net/progit/

1. 检查是否已经有SSH Key

cd ~/.ssh

2. 生成一个新的SSH Key

ssh-keygen -t rsa -C "admin@example.com"

请自行替换 admin@example.com 为自己的电邮地址。之后直接回车,不用填写东西。之后会让你输入密码短语(passphrase)。然后就生成一个目录 .ssh ,里面有两个文件: id_rsa 和 id_rsa.pub 。

3. Git配置

1. 配置用户信息

git config --global user.name "John Doe"
git config --global user.email "johndoe@example.com"

请自行替换 John Doe 为自己常用的英文网络ID , johndeo@exaple.com 为自己常用的 Email 。

2. 获取帮助

想了解 Git 的各式工具该怎么用,可以阅读它们的使用帮助,方法有三:

git help <verb>
git <verb> --help
man git-<verb>

比如,要学习 config 命令可以怎么用,运行:

git help config

4. Git相关操作命令

1. 创建新仓库

创建新文件夹,打开,然后执行:

git init

以创建新的 git 仓库。

2. 检出仓库

执行如下命令以创建一个本地仓库的克隆版本:

git clone /path/to/repository

如果是远端服务器上的仓库,你的命令会是这个样子:

git clone username@host:/path/to/repository

3. 工作流

你的本地仓库由 git 维护的三棵“树”组成。第一个是你的 工作目录,它持有实际文件;第二个是 缓存区(Index),它像个缓存区域,临时保存你的改动;最后是 HEAD,指向你最近一次提交后的结果。

4. 添加与提交

你可以计划改动(把它们添加到缓存区),使用如下命令:

git add <filename>
git add *

这是 git 基本工作流程的第一步;使用如下命令以实际提交改动:

git commit -m "代码提交信息"

现在,你的改动已经提交到了 HEAD,但是还没到你的远端仓库。

5. 推送改动

你的改动现在已经在本地仓库的 HEAD 中了。执行如下命令以将这些改动提交到远端仓库:

git push origin master

可以把 master 换成你想要推送的任何分支。

如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,你可以使用如下命令添加:

git remote add origin <server>

如此你就能够将你的改动推送到所添加的服务器上去了。

6. 分支

分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是“默认的”。在其他分支上进行开发,完成后再将它们合并到主分支上。

创建一个叫做 feature_x 的分支,并切换过去:

git checkout -b feature_x

切换回主分支:

git checkout master

再把新建的分支删掉:

git branch -d feature_x

除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的:

git push origin <branch>

7. 更新与合并

要更新你的本地仓库至最新改动,执行:

git pull

以在你的工作目录中 获取(fetch) 并 合并(merge) 远端的改动。 要合并其他分支到你的当前分支(例如 master),执行:

git merge <branch>

两种情况下,git 都会尝试去自动合并改动。不幸的是,自动合并并非次次都能成功,并可能导致 冲突(conflicts)。 这时候就需要你修改这些文件来人肉合并这些 冲突(conflicts) 了。改完之后,你需要执行如下命令以将它们标记为合并成功:

git add <filename>

在合并改动之前,也可以使用如下命令查看:

git diff <source_branch> <target_branch>

8. 标签

在软件发布时创建标签,是被推荐的。这是个旧有概念,在 SVN 中也有。可以执行如下命令以创建一个叫做 1.0.0 的标签:

git tag 1.0.0 1b2e1d63ff

1b2e1d63ff 是你想要标记的提交 ID 的前 10 位字符。使用如下命令获取提交 ID

git log

你也可以用该提交 ID 的少一些的前几位,只要它是唯一的。

9. 替换本地改动

假如你做错事(自然,这是不可能的),你可以使用如下命令替换掉本地改动:

git checkout -- <filename>

此命令会使用 HEAD 中的最新内容替换掉你的工作目录中的文件。已添加到缓存区的改动,以及新文件,都不受影响。

假如你想要丢弃你所有的本地改动与提交,可以到服务器上获取最新的版本并将你本地主分支指向到它:

git fetch origin
git reset --hard origin/master

10.在命令行中创建并提交Git仓库

mkdir example
cd example
git init
echo "# example" >> README.md
git add README.md
git commit -m "first commit"
git remote add origin git@github.com:ycrao/example.git
git push -u origin master

11. 在命令行提交已有项目

cd existing_git_repo
git remote add origin git@github.com:ycrao/existing_git_repo.git
git push -u origin master

注意:第10、11条示例中 git@github.com:ycrao/example.git 或 git@github.com:ycrao/existing_git_repo.git 是仓库 SSH方式地址,一般源码托管服务商(如 GitHub 和 Coding )会在仓库页面中告知你,请根据实际情况与操作自行替换。

From LzSkyline's Blog : https://www.lzskyline.com/archives/467

当前没有任何回复哦,快成为第一个吃螃蟹的人~

发表评论

电子邮件地址不会被公开。 必填项已用*标注